两个Bean:Category(父框中显示)、SubCategory(联动子框中显示)。
Action中:
。
。
。
private Map<Long, List<SubCategory>> subCategoryMap = new HashMap<Long, List<SubCategory>>();//全局变量getter,setter方法自己写
。
。
//方法中关键代码如下
List<Category> categoryList = categoryService.findAllCategory();
for(int i=0;i<categoryList.size();i++){
List<SubCategory> templist = new ArrayList<SubCategory>();
templist = subCategoryService.findByCategoryId(categoryList.get(i).getId());
subCategoryMap.put(categoryList.get(i).getId(),templist);
}
jsp页面显示:
<s:doubleselect theme="simple" tooltip="所有分类" name="event.category.id"
list="categoryList" listKey="id" listValue="categoryName"
doubleList="subCategoryMap[top.id]" doubleName="event.subCategory.id"
doubleListKey="id" doubleListValue="name" />
页面关键:通过doubleList属性,将第一个框list中的id和第二个框中的Map中的key联系起来,top值第一个框中的整个对象
特别注意:<s:doubleselect/>标签必须放在<s:form>中,放在普通<form>中会出错,而且s:form必须指定name属性
另外,希望页面美观的话,希望s:doubleselect标签和左边的字对齐,则指定s:doubleselect属性theme="simple"
希望两个select排成一行(貌似默认是上下行的),则在页面顶部声明css:
<style type="text/css">
.doubleselect br{
display: none;
}
</style>
然后在<s:form>外面套一个< div class="doubleselect">就可以了!