参考:http://blog.csdn.net/yanyuening/article/details/4246995
struts2的select标签中,常用的有以下几个属性:
(1)struts2中的select 标签中,必须设置的属性只有一个,即是list。
(2)select标签的list中必须有值,不然会报错。如果没有值,可以加上headerKey, headerValue,这样就可以通过了。如:
<s:select name="geElement.childType" list="childTypeList" listKey="key" listValue="value" headerKey="0" headerValue="--请选择子类型--"/>
其中,即使list中有值,我们也通常会加上headerKey, headerValue,即列表中显示的第一个选项。注意,headerKey不可以为空,不可以为-1。
(3)list属性:通常是在action中定义的,必须是一个可以迭代的源,如为一个List, Map, Set等。如果是一个Map,那么map的key就对应于select标签中的value,map中的value就对应于select标签中的option。而如果是一个List或者是一个Set,那么可以通过listKey和listValue指定。
(4)listKey和listValue:listKey即对应于select标签中的value, listValue即对应于select标签中的option。
(5)name属性:即是表单中select的名称。
jsp例子:
<s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"/>
<%
List bs = new ArrayList();
Books a = new Books();
a.setName("java高级语言");a.setAuthor("张三");
Books b = new Books();
b.setName("C#高级语言");b.setAuthor("李四");
bs.add(a);bs.add(b);
request.setAttribute("bs",bs);
Map map = new HashMap();
map.put("1","汉族");
map.put("2","苗族");
request.setAttribute("map",map);
%>
list:<s:select list="#request.bs" listKey="name" listValue="author" headerKey="0" headerValue="--请选择子类型--"></s:select>
map:<s:select list="#request.map" name="2" ></s:select>