想了一天 也做了一天 最后是数据结构不对 ,没能 动态级联 类别和子类别 二级菜单
需求是: 商品要进行分类 ,希望 注册商品时候 能选择它属于哪一个大类的一个子类别,,需要动态的选择下拉菜单 ,就像选择省份,会出现相应的城市
<s:formname="f1">
<s:doubleselectlist="#request.provinceList"listKey="id"listValue="name"
doubleName="cityId"
doubleList="#request.cityMap.get(top.id)"doubleListKey="id"doubleListValue="name"/>
</s:form>
这是doubleselect的jsp代码
list是第一个菜单的类别, listKey相当于input标签的 name listValue是显示的数据项,相当于input标签的value
doubleList是Map<k,k>的数据结构,get(top.id) 表示从第一级菜单的参数id来查询对应的value,top.id作为map的key
java代码
HttpServletRequest request = ServletActionContext.getRequest(); SelectSql sel = new SelectSql(); List<Category> categoryList= new ArrayList<Category>(); categoryList= sel.selectCategoryAll(); request.setAttribute("categoryList", categoryList); Map<String, List<SonCategory>> sonMap = new HashMap<String, List<SonCategory>>(); for(int i=0;i<categoryList.size();i++){ String cateId = categoryList.get(i).getCategoryId(); sonMap.put(cateId, sel.findSonCateById(cateId)); }
jsp代码
<s:form name="f1">
<s:doubleselect list="#request.categoryList" listKey="categoryId" listValue="categoryName"
doubleName="cityId"
doubleList="#request.sonMap.get(top.categoryId)" doubleListKey="sonCategoryId" doubleListValue="sonCategoryName"/>
</s:form>