s:select 标签是 Struts2 框架中用于生成 HTML select 元素的标签,使用 s:select 标签可以方便地生成下拉框。当需要从后台传递一个 List 集合作为下拉框的选项时,可以使用 s:select 标签中的 list 属性,将 List 集合作为 s:select 标签对应的下拉框的选项。
然而,在某些场景下,我们需要将 List 集合替换为复杂的数据结构,例如 Map 集合,这时就需要使用 s:select 标签中 list 属性存储 Map 对象的方式来完成。
使用 s:select 标签中 list 属性存放 Map 数据时,需要注意以下几点:
- Map 中的 key 值和 value 值分别表示的是 select 中 option 里面的 value 属性以及 option 中显示的文本值;
- list 属性需要使用 Struts 注解 @Action 中的方法返回值进行绑定,该方法必须返回一个 Map 集合;
- 在 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对象的使用 - Python技术站