在使用struts2的doubleselect标签时遇到以下问题:一级下拉列表的list想使用#{}的方式直接产生Map的方式,
二级级联的下拉列表使用的Map<Integer,List<types>> map对象方式(typesMap)。问题是在二级下拉列表中top值不知道应该取什么?代码如下:(这种方式二级下拉列表中无值,因为top值不对)<s:form>
<s:doubleselect name="topTypes" list="#{0:'Top选项1',1:'Top选项2'}" listKey="key" listValue="value"
doubleName="types" doubleList="typesMap.get(top)" doubleListKey="id" doubleListValue="name" theme="simple"/>
</s:form>
以下这种方式,是可以的:<s:form>
<s:doubleselect name="topTypes" list="{0,1}"
doubleName="types" doubleList="typesMap.get(top)" doubleListKey="id" doubleListValue="name" theme="simple"/>
</s:form>
请问,当一级下拉列表是使用的Map时,二级下拉列表中的top如何获得一级Map的key值呢?
二级级联的下拉列表使用的Map<Integer,List<types>> map对象方式(typesMap)。问题是在二级下拉列表中top值不知道应该取什么?代码如下:(这种方式二级下拉列表中无值,因为top值不对)<s:form>
<s:doubleselect name="topTypes" list="#{0:'Top选项1',1:'Top选项2'}" listKey="key" listValue="value"
doubleName="types" doubleList="typesMap.get(top)" doubleListKey="id" doubleListValue="name" theme="simple"/>
</s:form>
以下这种方式,是可以的:<s:form>
<s:doubleselect name="topTypes" list="{0,1}"
doubleName="types" doubleList="typesMap.get(top)" doubleListKey="id" doubleListValue="name" theme="simple"/>
</s:form>
请问,当一级下拉列表是使用的Map时,二级下拉列表中的top如何获得一级Map的key值呢?
解决方案 »
- 客户端传输数据的方式
- 用ArrayList写得一个增删改查 java程序
- java 通信问题
- 求各位高手帮忙(hibernate)
- 动态分页怎么编写,谁知道的帮帮我~~~ 谢啦
- 请问struts的upload支不支持多文件上传(在线结贴,up有分,不够再加。散)
- 请教下拉框初始化的一个问题,高手进!
- jsp中是否有类似于asp中request.QueryString("temp")的用法?
- 请问各位:我用SUN公司的JAXP开发包解析XML文档,可不知道对XML解析后如何将结果写回文件中。请各位熟悉Java和XML的高手帮忙。
- tomcat 启动失败求教。不部署可以正常启动,工程应该没有问题,之前在公司可正常运行,在我电脑也可以用,今天不知道什么情况!部署自己电脑后不好使了,报错如下
- 【解决了很有用不会的也可以来学习一下】我想Java实现在下载附件前得到该附件的大小[求助]
- 这个是什么流程,谢谢!
doubleList="typesMap.get(top.key)"
尝试过typesMap.get(top.key)不行.
因为一级列表没有JavaBean的实体,是直接使用#{}的方式直接产生Map对象.
doubleName="typeId" doubleList="typesMap.get(top)" doubleListKey="id" doubleListValue="name" theme="custom"/>
也是就让一级select的option直接使用只使用文字(value),而不设置key,像这样:list="{'Top选项1','Top选项2'}";
然后,二级select的List里面还是使用HashMap对象,不过map中封装成这样:(java代码,使用Struts2)public Map<String, List<Types>> getTypesMap()
{
Map<String, List<Types>> typesMap = new HashMap<String, List<Types>>();
//获得所有类别列表
List<Types> typesList = typesBuz.getAllTypes();
//Top选项1
List<Types> newsList = new ArrayList<Types>();
//Top选项2
List<Types> inforList = new ArrayList<Types>();
for(Types types : typesList)
{
//Top选项1
if(types.getKind()==0)
{
newsList.add(types);
}
//Top选项2
else if(types.getKind()==1)
{
inforList.add(types);
}
}
//封装到Map中
typesMap.put("Top选项1", newsList);
typesMap.put("Top选项2", inforList);
return typesMap;
}也就是使map的key为中文,重点在于:typesMap.put("Top选项1", newsList);这样,当一级select选择为"Top选项1"时,二级select会执行typesMap.get(top),即从typesMap中get map中key为top的列表对象(top表示为一级select当前选定对象).只是觉得将map的key使用中文好象不怎么合理一样.
你用top.id试一下,应该就好用了~