郭玮洁郑合惠子:struts2 doubleselect
来源:百度文库 编辑:九乡新闻网 时间:2024/04/30 11:58:00
今天又被struts2的doubleselect标签困扰了一整个上午,令人费解,在此之前,已经试过被困扰一天的情况了,因此觉得有必要把doubleselect这个标签在运用的时候有关的注意事项写下来,警惕再犯!
先简单说一下doubleselect的用法(希望对初学者有所帮助)
doubleselect最常用的结构为
name 一级下拉菜单的名称
list 一级下拉菜单中的下拉链表,通常为hash的keyset() --详细见下面的代码部分
listValue 一级下拉菜单的可见属性
listKey 一级下拉菜单的属性值
doubleName 二级下拉菜单的名称(通常为要获取的参数,应与action中的属性名保持一致)
doubleList 二级下拉菜单中的下拉链表,通常为hash中的top--详细见下面的代码部分
doubleListValue 二级下拉菜单中的可见属性
doubleListKey 二级下拉菜单中的属性值
forName doubleselect所对应的表单名,默认为当前表单,若不在表单中,或是没有指定的表单名不存在,则会报错!
举个通用的例子:
现有:国家表 country{country1,country2,country3}
城市表 city{{country1,city1},{country1,city2},
{country2,city1},{country2,city2},
{country3,city1},{country3,city2}}
国家表中只有一个关键字段country,而一个国家有多个城市,因此国家与城市间是一对多的关系
现在要通过选取国家来获得相应的城市,步骤如下:
1.创建国家链表 List countryList = new ArrayList();
2.创建国家和城市关联的哈希表Map> countryTocityMap = new HashMap();
3.对country链表进行遍历,把每个国家对应的city链表添加到map里面去
for(Country country : countryList){
List cityList = country.getCityList(); //具体的实现方法因人而异
countryTocityMap.put(country,cityList); //遍历的把多个城市“放”到一个国家里面去,形成对应关系
}
4.经历上面3个步骤就可以得到一个同时具有国家和城市的哈希表,下面可以对doubleselect来进行设置
listValue="name(country表里面的字段)" listKey="id(country表里面的字段)"
doubleName="city(自定义)" doubleList="countryTocity[top]"
doubleListValue="name(city表里面的字段)" doubleListKey="id(city表里面的字段)"
forName="form1(指定的表单名一定要存在!)" >
啰嗦太多了。。。其实今天困扰我的是一个令人很费解的问题,在将添加记录和修改记录集成在一个页面的时候,为贪图方便,我用了几个标志位判断,而后又为了偷懒,用了两个一模一样的doubleselect,问题就来了
添加的表单,我是在一进入页面的时候就加载了的,为了好看,放到了一个div里面先隐藏起来,而修改的表单则是通过修改的标志位进行判断,添加记录很顺利就完成了,但是修改记录的时候doubleselect就不联动了,在百思不得其解的时候,将doubleName改为不同的,结果出现一个很奇怪的现象,修改表单里的第二级下拉菜单只会停留在一开始选中的选项上面,不会有联动效果出现。。最后在修改了doubleselect的一级name之后。。。结果出来了
结论:当在同一个页面使用两个二级下拉菜单的时候,特别是在有间接传递参数的情况下,一级的名称是不可以相同的!
先简单说一下doubleselect的用法(希望对初学者有所帮助)
doubleselect最常用的结构为
name 一级下拉菜单的名称
list 一级下拉菜单中的下拉链表,通常为hash的keyset() --详细见下面的代码部分
listValue 一级下拉菜单的可见属性
listKey 一级下拉菜单的属性值
doubleName 二级下拉菜单的名称(通常为要获取的参数,应与action中的属性名保持一致)
doubleList 二级下拉菜单中的下拉链表,通常为hash中的top--详细见下面的代码部分
doubleListValue 二级下拉菜单中的可见属性
doubleListKey 二级下拉菜单中的属性值
forName doubleselect所对应的表单名,默认为当前表单,若不在表单中,或是没有指定的表单名不存在,则会报错!
举个通用的例子:
现有:国家表 country{country1,country2,country3}
城市表 city{{country1,city1},{country1,city2},
{country2,city1},{country2,city2},
{country3,city1},{country3,city2}}
国家表中只有一个关键字段country,而一个国家有多个城市,因此国家与城市间是一对多的关系
现在要通过选取国家来获得相应的城市,步骤如下:
1.创建国家链表 List
2.创建国家和城市关联的哈希表Map
3.对country链表进行遍历,把每个国家对应的city链表添加到map里面去
for(Country country : countryList){
List
countryTocityMap.put(country,cityList); //遍历的把多个城市“放”到一个国家里面去,形成对应关系
}
4.经历上面3个步骤就可以得到一个同时具有国家和城市的哈希表,下面可以对doubleselect来进行设置
doubleName="city(自定义)" doubleList="countryTocity[top]"
doubleListValue="name(city表里面的字段)" doubleListKey="id(city表里面的字段)"
forName="form1(指定的表单名一定要存在!)" >
啰嗦太多了。。。其实今天困扰我的是一个令人很费解的问题,在将添加记录和修改记录集成在一个页面的时候,为贪图方便,我用了几个标志位判断,而后又为了偷懒,用了两个一模一样的doubleselect,问题就来了
添加的表单,我是在一进入页面的时候就加载了的,为了好看,放到了一个div里面先隐藏起来,而修改的表单则是通过修改的标志位进行判断,添加记录很顺利就完成了,但是修改记录的时候doubleselect就不联动了,在百思不得其解的时候,将doubleName改为不同的,结果出现一个很奇怪的现象,修改表单里的第二级下拉菜单只会停留在一开始选中的选项上面,不会有联动效果出现。。最后在修改了doubleselect的一级name之后。。。结果出来了
结论:当在同一个页面使用两个二级下拉菜单的时候,特别是在有间接传递参数的情况下,一级的名称是不可以相同的!
struts2 doubleselect
Struts2实例教程
struts2 ajaxf
Struts2标签
Struts2教程1:第一个Struts2程序
Struts2 XML配置详解
[velocity]Struts2下
Struts2教程t
struts2中文乱码解决方法
Struts2?页面数据处理
struts2文件上传
struts2多文件上传
struts2学习总结
struts2实现文件上传
Struts2上传文件-2
struts2.x学习总结
Struts2教程1:第一个Struts2程序 - 哈佛校训 - BlogJava
17.7 使用Struts2 注释验证 - struts2 - ITeye专栏频道
在struts2中使用JFreeChart2
Struts2教程第三方斯蒂芬
struts2.0之struts.xml
Struts2返回XML,JSON格式
简述STRUTS2 Convention零配置
Struts2拦截器和监听器