浅谈s:select 标签中list存放map对象的使用

s:select 标签是 Struts2 框架中用于生成 HTML select 元素的标签,使用 s:select 标签可以方便地生成下拉框。当需要从后台传递一个 List 集合作为下拉框的选项时,可以使用 s:select 标签中的 list 属性,将 List 集合作为 s:select 标签对应的下拉框的选项。

s:select 标签是 Struts2 框架中用于生成 HTML select 元素的标签,使用 s:select 标签可以方便地生成下拉框。当需要从后台传递一个 List 集合作为下拉框的选项时,可以使用 s:select 标签中的 list 属性,将 List 集合作为 s:select 标签对应的下拉框的选项。

然而,在某些场景下,我们需要将 List 集合替换为复杂的数据结构,例如 Map 集合,这时就需要使用 s:select 标签中 list 属性存储 Map 对象的方式来完成。

使用 s:select 标签中 list 属性存放 Map 数据时,需要注意以下几点:

  1. Map 中的 key 值和 value 值分别表示的是 select 中 option 里面的 value 属性以及 option 中显示的文本值;
  2. list 属性需要使用 Struts 注解 @Action 中的方法返回值进行绑定,该方法必须返回一个 Map 集合;
  3. 在 JSP 页面中使用 s:select 标签时,需要设置 list 属性值为 ⽤于从 Struts2 Action 中返回的 map 数据的 key 值。

下面是一个示例说明:

在 Struts2 的 action 中定义一个返回 Map 对象的方法:

public Map<String,String> getMap(){
    Map<String,String> map = new HashMap<>();
    map.put("apple","苹果");
    map.put("banana","香蕉");
    map.put("orange","橘子");
    return map;
}

在 JSP 页面中使用 s:select 标签,并将 list 属性设置为对应返回的 Map 对象:

<s:select list="map" name="fruit" label="选择水果" headerKey="" headerValue="请选择水果"/>

通过设置 list 属性为 "map",就可以将返回的 Map 对象作为 s:select 标签中选项的来源,生成一个下拉框,下拉框的选项包括了 Map 中的 key:value 对应关系。

下面是另外一个示例:

在 Struts2 的 action 中定义一个返回 List<Map<String,String>> 对象的方法:

public List<Map<String,String>> getListMap(){
    List<Map<String,String>> list = new ArrayList<>();
    Map<String,String> map1 = new HashMap<>();
    map1.put("value","1001");
    map1.put("label","张三");
    Map<String,String> map2 = new HashMap<>();
    map2.put("value","1002");
    map2.put("label","李四");
    Map<String,String> map3 = new HashMap<>();
    map3.put("value","1003");
    map3.put("label","王五");
    list.add(map1);
    list.add(map2);
    list.add(map3);
    return list;
}

在 JSP 页面中使用 s:select 标签,并将 list 属性设置为对应返回的 List<Map<String,String>> 对象

<s:select list="listMap" name="user" label="选择用户" headerKey="" headerValue="请选择用户" listValue="label" listKey="value"/>

通过设置 list 属性为 "listMap",并通过 listValue、listKey 两个属性来设置 value 和 label 的值,就可以将返回的 List<Map<String,String>> 对象作为 s:select 标签中选项的来源,生成一个下拉框,下拉框的选项包括了 List 中的 Map 中的 key:value 对应关系。

本文标题为:浅谈s:select 标签中list存放map对象的使用

基础教程推荐