struts2 的doubleSelect标签的使用
来源:互联网 发布:金山数据恢复大师安卓 编辑:程序博客网 时间:2024/04/29 10:01
- Struts2提供了级联下拉选择框doubleselect标签,这对简化诸如省份/城市这样的典型需求的操作是大有好处的 ,本例是生成“部门->员工”的级联菜单。
-
- 第一步:本例用到的类的介绍:
-
- 部门类:SysDepartment
-
- view plaincopy to clipboardprint?
- public class SysDepartment{
- private Integer dptId;
- private String dptName;
-
- }
- public class SysDepartment{
- private Integer dptId;
- private String dptName;
-
- }
-
- 员工类:ErmEmployee
-
- view plaincopy to clipboardprint?
- public class ErmEmployee{
- private Integer eplId;
- private String userName;
-
- }
- public class ErmEmployee{
- private Integer eplId;
- private String userName;
-
- }
-
- 注:这里为了演示方便,部门和员工的关系表就不列出了,同时将java代码嵌入到jsp页面中。
-
- 第二步:生成部门和员工
-
- 以下是在jsp中生成部门和员工的代码字段:
-
- view plaincopy to clipboardprint?
- <%
- Map<SysDepartment, List<ErmEmployee>> map = new HashMap<SysDepartment, List<ErmEmployee>>();
- SysDepartment d1=new SysDepartment();
- d1.setDptId(1);
- d1.setDptName("销售一部");
- SysDepartment d2=new SysDepartment();
- d2.setDptId(2);
- d2.setDptName("网络一部");
- SysDepartment d3=new SysDepartment();
- d3.setDptId(3);
- d3.setDptName("IT中心");
- List<ErmEmployee> elist1=new ArrayList<ErmEmployee>();
- ErmEmployee e1=new ErmEmployee();
- e1.setEplId(1);
- e1.setUserName("张三");
- ErmEmployee e2=new ErmEmployee();
- e2.setEplId(2);
- e2.setUserName("李四");
- ErmEmployee e9=new ErmEmployee();
- e9.setEplId(9);
- e9.setUserName("巩利");
- ErmEmployee e10=new ErmEmployee();
- e10.setEplId(10);
- e10.setUserName("赵薇");
- ErmEmployee e11=new ErmEmployee();
- e11.setEplId(11);
- e11.setUserName("刘德华");
- elist1.add(e1);
- elist1.add(e2);
- elist1.add(e9);
- elist1.add(e10);
- elist1.add(e11);
- List<ErmEmployee> elist2=new ArrayList<ErmEmployee>();
- ErmEmployee e3=new ErmEmployee();
- e3.setEplId(3);
- e3.setUserName("王五");
- ErmEmployee e4=new ErmEmployee();
- e4.setEplId(4);
- e4.setUserName("刘六");
- ErmEmployee e5=new ErmEmployee();
- e5.setEplId(5);
- e5.setUserName("吴邦国");
- elist2.add(e3);
- elist2.add(e4);
- elist2.add(e5);
-
- List<ErmEmployee> elist3=new ArrayList<ErmEmployee>();
- ErmEmployee e6=new ErmEmployee();
- e6.setEplId(6);
- e6.setUserName("张学友");
- ErmEmployee e7=new ErmEmployee();
- e7.setEplId(7);
- e7.setUserName("关芝琳");
- ErmEmployee e8=new ErmEmployee();
- e8.setEplId(8);
- e8.setUserName("吴京");
- elist3.add(e6);
- elist3.add(e7);
- elist3.add(e8);
-
-
- map.put(d1,elist1);
- map.put(d2,elist2);
- map.put(d3,elist3);
-
- request.setAttribute("map", map);
- %>
- <%
- Map<SysDepartment, List<ErmEmployee>> map = new HashMap<SysDepartment, List<ErmEmployee>>();
- SysDepartment d1=new SysDepartment();
- d1.setDptId(1);
- d1.setDptName("销售一部");
- SysDepartment d2=new SysDepartment();
- d2.setDptId(2);
- d2.setDptName("网络一部");
- SysDepartment d3=new SysDepartment();
- d3.setDptId(3);
- d3.setDptName("IT中心");
- List<ErmEmployee> elist1=new ArrayList<ErmEmployee>();
- ErmEmployee e1=new ErmEmployee();
- e1.setEplId(1);
- e1.setUserName("张三");
- ErmEmployee e2=new ErmEmployee();
- e2.setEplId(2);
- e2.setUserName("李四");
- ErmEmployee e9=new ErmEmployee();
- e9.setEplId(9);
- e9.setUserName("巩利");
- ErmEmployee e10=new ErmEmployee();
- e10.setEplId(10);
- e10.setUserName("赵薇");
- ErmEmployee e11=new ErmEmployee();
- e11.setEplId(11);
- e11.setUserName("刘德华");
- elist1.add(e1);
- elist1.add(e2);
- elist1.add(e9);
- elist1.add(e10);
- elist1.add(e11);
- List<ErmEmployee> elist2=new ArrayList<ErmEmployee>();
- ErmEmployee e3=new ErmEmployee();
- e3.setEplId(3);
- e3.setUserName("王五");
- ErmEmployee e4=new ErmEmployee();
- e4.setEplId(4);
- e4.setUserName("刘六");
- ErmEmployee e5=new ErmEmployee();
- e5.setEplId(5);
- e5.setUserName("吴邦国");
- elist2.add(e3);
- elist2.add(e4);
- elist2.add(e5);
-
- List<ErmEmployee> elist3=new ArrayList<ErmEmployee>();
- ErmEmployee e6=new ErmEmployee();
- e6.setEplId(6);
- e6.setUserName("张学友");
- ErmEmployee e7=new ErmEmployee();
- e7.setEplId(7);
- e7.setUserName("关芝琳");
- ErmEmployee e8=new ErmEmployee();
- e8.setEplId(8);
- e8.setUserName("吴京");
- elist3.add(e6);
- elist3.add(e7);
- elist3.add(e8);
-
-
- map.put(d1,elist1);
- map.put(d2,elist2);
- map.put(d3,elist3);
-
- request.setAttribute("map", map);
- %>
-
- 第三步:在jsp页面插入struts2 doubleselect标签:
-
-
- view plaincopy to clipboardprint?
- <s:form action="doubleSelectPost" name="form1">
- <s:doubleselect
- formName="form1"
- label="业务员"
- list="#request.map.keySet()"
- name="dptId"
- id="comboId"
- listKey="dptId"
- listValue="dptName"
- doubleName="eplId"
- doubleId="comboDoubleId"
- doubleList="#request.map[top]"
- doubleListKey="eplId"
- doubleListValue="userName" />
- </s:form>
- <s:form action="doubleSelectPost" name="form1">
- <s:doubleselect
- formName="form1"
- label="业务员"
- list="#request.map.keySet()"
- name="dptId"
- id="comboId"
- listKey="dptId"
- listValue="dptName"
- doubleName="eplId"
- doubleId="comboDoubleId"
- doubleList="#request.map[top]"
- doubleListKey="eplId"
- doubleListValue="userName" />
- </s:form>
-
- 说明:
-
- formName: 对应的表单名称。
- label: 该级联下拉列表的标签。
- name: 第一个下拉列表的名称。name="dptId"指明了第一个下拉列表名称为dptId。
- id: 第一个下拉列表的id名称。
- list: 指定用于输出第一个下拉列表框中选项的集合。本示例 list="#request.map.keySet()" 是将map的键(即部门)作为第一个下拉列表选项。
- listKey: 指定集合元素中的某个属性作为第一个下拉列表框的value。listKey="dptId"是将部门id作为第一个下拉列表的值,在提交该表单时,参数名就是depId,值为listKey的值。如“dptId=1”
- listValue:指定集合元素中的某个属性作为第一个下拉框的标签。listValue="dptName" 用部门名称作为标签,即下拉列表显示出来的值。
- doubleName: 第二个下拉列表的名称。
- doubleId: 第二个下拉列表的id名称。
- doubleList: 指定用于输出第二个下拉列表框中选项的集合。本示例 #request.map[top] 是将map的值(即员工)作为第二个下拉列表选项。
- doubleListKey: 指定集合元素中的某个属性作为第二个下拉列表框的value。doubleListKey="eplId"是将员工id作为第二个下拉列表的值。
- doubleListValue: 指定集合元素中的某个属性作为第二个下拉框的标签。doubleListValue="userName" 用员工名称作为标签。
- 到此,基本代码已经完成。执行该页面,得到如下页面:
-
-
-
- 可以看到,生成出来的级联下拉列表是分行的,如果不需要分行,可以怎么做呢?
-
- 以下介绍一个简单的方法,就是在<s:form>标签外包含标签:
-
- view plaincopy to clipboardprint?
- <div class="doubleselect"><s:form>。。。</s:form>
<div class="doubleselect"><s:form>。。。</s:form> 然后加入css样式: view plaincopy to clipboardprint? <STYLE type="text/css"> .doubleselect br{ display:none; } </STYLE> <STYLE type="text/css"> .doubleselect br{ display:none; } </STYLE> 修改后,即可实现级联列表框在同一行显示了。效果如下: 本文来自CSDN博客,转载请标明出处:http: