Struts2提供了级联下拉选择框doubleselect标签,这对简化诸如省份/城市这样的典型需求的操作是大有好处的 ,本例是生成“部门->员工”的级联菜单。
第一步:本例用到的类的介绍:
部门类:SysDepartment
员工类:ErmEmployee
注:这里为了演示方便,部门和员工的关系表就不列出了,同时将java代码嵌入到jsp页面中。
第二步:生成部门和员工
以下是在jsp中生成部门和员工的代码字段:
第三步:在jsp页面插入struts2 doubleselect标签:
说明:
- 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>标签外包含标签:
然后加入css样式:
修改后,即可实现级联列表框在同一行显示了。效果如下: