一、 Struts2提供了级联下拉选择框doubleselect标签,这对简化诸如省份/城市这样的典型需求的操作是大有好处的.
如: “省份->城市”的级联菜单。
(1)省份类(封装setXXX and getXXX)
- package com.hlx.entity;
- public class Province {
- private int pid;
- private String pname;
- }
- public class City {
- private int cid;
- private String cname;
- }
- 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" 用城市名称作为标签。
效果如下: