一、 Struts2提供了级联下拉选择框doubleselect标签,这对简化诸如省份/城市这样的典型需求的操作是大有好处的.
如: “省份->城市”的级联菜单。
(1)省份类(封装setXXX and getXXX)
package com.hlx.entity;
public class Province {
private int pid;
private String pname;
}
(2)城市类(封装setXXX and getXXX)
public class City {
private int cid;
private String cname;
}
(3)Action类
public class ProvinceCity extends ActionSupport {
// map集合,key映射省份,value映射该省份的城市
private Map<Province, List<City>> map;
public Map<Province, List<City>> getMap() {
return map;
}
public void setMap(Map<Province, List<City>> map) {
this.map = map;
}
@Override
public String execute() throws Exception {
// 江苏省
Province pro1 = new Province(1, "江苏省");
// 所在的城市
List<City> citys = new ArrayList<City>();
citys.add(new City(11, "南京"));
citys.add(new City(22, "常州"));
citys.add(new City(33, "苏州"));
// 浙江省
Province pro2 = new Province(2, "浙江省");
// 所在的城市
List<City> citys1 = new ArrayList<City>();
citys1.add(new City(10, "杭州"));
citys1.add(new City(20, "宁波"));
citys1.add(new City(30, "温州"));
//添加到集合中
map = new HashMap<Province, List<City>>();
map.put(pro1, citys);
map.put(pro2, citys1);
return SUCCESS;
}
}
(3)JSP页面
<style type="text/css">
.doubleselect br{
display:none;
}
</style>
</head>
<body>
<div class="doubleselect">
<s:form action="doubleSelectPost" name="form1">
<s:doubleselect
formName="form1"
label="省份"
name="pid"
list="map.keySet()"
listKey="pid"
listValue="pname"
doubleList="map[top]"
doubleName="id"
doubleListKey="cid"
doubleListValue="cname" >
</s:doubleselect>
</s:form>
</div>
</body>
</html>
属性说明:
- formName: 对应的表单名称。
- label: 该级联下拉列表的标签。
- name: 第一个下拉列表的名称。name="pId"
- id: 第一个下拉列表的id名称。
- list: 指定用于输出第一个下拉列表框中选项的集合。本示例 list="map.keySet()" 是将map的键(即省份)作为第一个下拉列表选项。
- listKey: 指定集合元素中的某个属性作为第一个下拉列表框的value。listKey="pId"是将省份d作为第一个下拉列表的值,在提交该表单时,参数名就是pId,值为listKey的值。如“pId=1”
- listValue:指定集合元素中的某个属性作为第一个下拉框的标签。listValue="pname" 用省份名称作为标签,即下拉列表显示出来的值。
- doubleName: 第二个下拉列表的名称。
- doubleId: 第二个下拉列表的id名称。
- doubleList: 指定用于输出第二个下拉列表框中选项的集合。本示例 map[top] 是将map的值(即城市)作为第二个下拉列表选项。
- doubleListKey: 指定集合元素中的某个属性作为第二个下拉列表框的value。doubleListKey="cId"是将城市id作为第二个下拉列表的值。
- doubleListValue: 指定集合元素中的某个属性作为第二个下拉框的标签。doubleListValue="cname" 用城市名称作为标签。
效果如下: