使用Map在Struts2中进行双重选择

时间:2016-06-16 14:57:41

标签: java struts2

我正在尝试使用此link作为指南,使用Struts2中的doubleselect标记。当我选择电话国家代码(例如:91,92,216)时,它应该显示该国家的三个城市。

为此,我有一个Map<Integer, List<String>。下面是标签。

<s:doubleselect 
   name="obj.countryCode" id="countryCode" list="countryCodeCityNameMap.keySet()"
   doubleName="obj.cityName" doubleId="cityName" doubleList="countryCodeCityNameMap" />

这会产生不同的输出。在第一个下拉列表中,它会正确显示国家/地区代码。但无论第一个下拉列表中的选定值如何,它总是会显示第二个下拉列表中的所有值,如下所示:

[aaa,bbb,ccc]
[ddd,eee,fff]
[ggg,hhh,iii]

如何使用Map获取所需的输出? 我应该按照给定的链接创建这样的结构:

List<Makes> // in first drop-down
Makes contains makeId, modelId and List<Models> // List<Models> in second drop-down
Models contains modelId and modelName

如果是,那么我的场景如何适应这个模型?

1 个答案:

答案 0 :(得分:1)

如果 the top object is still available,您应该可以使用它来对内部列表进行子过滤,如下所示:

<s:doubleselect 
         name="obj.countryCode"    id="countryCode"    list="countryCodeCityNameMap.keySet()"
   doubleName="obj.cityName" doubleId="cityName" doubleList="countryCodeCityNameMap.get(top)"
/>