doubleselect标签是个下拉菜单,前一段时间做项目中做到,说说心得:
doubleselect是一个联动菜单,根据主菜单的on selected事件子菜单也相应变化,
说说具体实现:
这是Struts2标签代码,其中"#application.map.keySet()" 表示主菜单中的数据,keySet()表示返回此映射中包含的键的set视图,这是关键所在。
再看服务端代码:
先把类别信息从数据库中取出,保存为List类型,下面做个转换,转换成Map的。
放到Application中。我觉得这一步必须转成Map,如果把List直接放到Application中,虽然也能在客户端得到信息,但是doubleList中的数据很难和List中的数据形成联系。
doubleselect是一个联动菜单,根据主菜单的on selected事件子菜单也相应变化,
说说具体实现:
<s:doubleselect label="所属类别" name="bt_id"
list="#application.map.keySet()"
listKey="bt_id"
listValue="bt_name"
doubleList="#application.map[top]"
doubleListKey="st_id" doubleListValue="st_name"
doubleName="st_id" cssStyle="color='red'"
doubleCssStyle="color='red'"/>
这是Struts2标签代码,其中"#application.map.keySet()" 表示主菜单中的数据,keySet()表示返回此映射中包含的键的set视图,这是关键所在。
再看服务端代码:
List bts = goodsService.getBtype();
Map m = new HashMap();
Iterator it = bts.iterator();
while(it.hasNext()){
Btype bt = (Btype)it.next();
m.put(bt, bt.getStypes());
}
ServletContext hr = ServletActionContext.getServletContext();
hr.setAttribute("map", m);
先把类别信息从数据库中取出,保存为List类型,下面做个转换,转换成Map的。
放到Application中。我觉得这一步必须转成Map,如果把List直接放到Application中,虽然也能在客户端得到信息,但是doubleList中的数据很难和List中的数据形成联系。