项目中遇到个小问题,总结下。
关于struts2 select标签的使用。
struts2 中从别的表中遍历数据 填充进入下拉菜单 用<s:select>标签显示.
struts2的版本为2.1.8
1 | <s:select |
2 | list= "" |
3 | name= "" |
4 | value= "" |
5 | headerKey= "" |
6 | headerValue= "" |
7 | listKey= "" |
8 | listValue= "" |
9 | /> |
(1)其中 list是必须具备的属性 list中可以存储map list set类型的数据
list 属性:通常是在action中定义的,必须是一个可以迭代的源,如为一个List, Map, Set等。如果是一个Map,那么map的key就对应于select标签中的value,map中的value就对应于select标签中的 option。而如果是一个List或者是一个Set,那么可以通过listKey和listValue指定。
(2)如果list为空headKey 和headValue不能为空.listKey和listValue:listKey即对应于select标签中的value, listValue即对应于select标签中的option
(3)name属性:即是表单中select的名称。
下面具体解释下各个属性的含义。
headerValue : 默认值value
headerKey : 默认name
list : 源数据 (可以在action方法里从数据库获取list)
name : 被选数据存放的位置(这里我方在对象obj的属性值userName中<需在action中定义该对象>)
listKey : 下拉选项的name
listValue : 下拉选项的value
value : 默认值
1.第一个例子:
<s:select list="{'aa','bb','cc'}" theme="simple" headerKey="00" headerValue="00"></s:select>
2.第二个例子:
<s:select list="#{1:'aa',2:'bb',3:'cc'}" label="abc" listKey="key" listValue="value" headerKey="0" headerValue="aabb">
3.第三个例子:
<%
java.util.HashMap map = new java.util.LinkedHashMap();
map.put(1,"aaa");
map.put(2,"bbb");
map.put(3,"ccc");
request.setAttribute("map",map);
request.setAttribute("aa","2");
%>
<s:select list="#request.map" label="abc" listKey="key" listValue="value"
value="#request.aa" headerKey="0" headerValue="aabb"></
s:select
>
headerKey headerValue 为设置缺省值
4.第四个例子
public class Program implements Serializable {
/** serialVersionUID */
private static final long serialVersionUID = 1L;
private int programid;
private String programName;
public int getProgramid() {
return programid;
}
public void setProgramid(int programid) {
this.programid = programid;
}
public String getProgramName() {
return programName;
}
public void setProgramName(String programName) {
this.programName = programName;
}
}
在 xxx extends extends ActionSupport {
private List<Program> programs ;
public List<Program> getPrograms() {
return programs;
}
public void setPrograms(List<Program> programs) {
this.programs = programs;
}
}
在jsp页面
<s:select list="programs " listValue="programName " listKey="programid " name="program" id="program"
headerKey="0l" headerValue=" " value="bean.programid "
></s:select>
红色部分为在action里面的list,黄色为<option value="xxx">value</option>对应bean里面的字段programName
绿色为<option value="xxx",对应bean里面的字段programid,紫色为设定select被选中的值,s:select 会自动在 bean选中 key对应的值
**********************************************应用实例**************************************************************
1、 Map类型
private String recommendSelect;
HashMap menuMap = new HashMap();
List<Menu> listTerritory = this.getMenuService().getTerritoryMenu();
for (Menu menu : listTerritory) {
if (menu.getTmId() != 2) {
menuMap.put("menu_" + menu.getTmId(), menu.getTmName());
}
}
channelist = programService.getAll();
for (Channel program : channelist) {
menuMap.put("program_" + program.getChannelId(), program.getChannelName());
}
request.setAttribute("menuMap", menuMap);
<!--jsp页面-->
<s:select list="#request.menuMap" listValue="value" value="#request.recommendSelect" name="recommendSelect" listKey="key" headerKey="" headerValue="-请选择分类-"></s:select>
2、List类型
private List<Channel> channelist;
private String channelSelect;
channelist = programService.getAll();
<s:select list="channelList" listValue="channelName" listKey="channelId " name="channelSelect" id="channelSelect" headerKey="" headerValue="-请选择分类-" value="channelSelect"></s:select>