准备:使用struts标签库,需要引入标签库<%@ taglib prefix="s" uri="/struts-tags"%>
Struts中的<s:select>标签有四种使用方式。接下来我们一一介绍。
第一个例子:
<s:select list='{"aa","bb","cc"}' headKey="11" headValue="默认显示" theme="simple"></s:select>
效果图:
第一例子分析:list值的格式为:{"值一","值二","值三"}。headKey属性是默认的option的value值,headValue属性是默认的显示值。使用上述方法后的设置的显示值和option的value值一致,除了用headKey和headValue设置的值。
第二个例子
<s:select list="#{1:'aa',2:'bb',3:'cc'}" theme="simple" headerKey="" headerValue="默认显示"></s:select>
效果图:
第二例子分析:
list值的格式为:{"key值一":"value值一","key值二":"value值二","key值三":"value值三"}。headKey属性是默认的option的value值,headValue属性是默认的显示值。使用上述方法后的设置的option的value值为key的值,显示的值为value的值。
第三个例子
<body> <s:form> <% java.util.HashMap map = new java.util.LinkedHashMap(); map.put(1,"aaa"); map.put(2,"bbb"); map.put(3,"ccc"); request.setAttribute("map",map); %> <s:select list="#request.map" label="abc" listKey="key" listValue="value" value="2" headerKey="0" headerValue="aabb"></s:select> </s:form> </body>
第三个例子分析
list值的为:Map类型的对象。headKey属性是默认的option的value值,headValue属性是默认的显示值。
listKey="key" listValue="value"把map的key值设为 option的value值为key的值,map的value值设为显示的值。value属性的值为选择的option的值
第四个例子
实体类:
public class GoodsCategory implements java.io.Serializable {
private Long id;
private String catName;
//省略get,set及构造方法。
}
jsp代码
<body> <% List<GoodsCategory> goodsCategorys = new ArrayList<GoodsCategory>(); for(int i=0;i<5;i++){ GoodsCategory goodsCategory = new GoodsCategory(); goodsCategory.setId(Long.parseLong(String.valueOf(i))); goodsCategory.setCatName("分类"+i); goodsCategorys.add(goodsCategory); } request.setAttribute("goodsCategorys",goodsCategorys); %> <form> <s:select list="#request.goodsCategorys" listKey="id" listValue="catName" id="goodsCat" name="goods.goodsCat" theme="simple"></s:select> </form> </body>效果图:
第四个例子分析
<s:select list="#request.goodsCategorys" listKey="id" listValue="catName" id="goodsCat" name="goods.goodsCat" theme="simple"></s:select>
list值的为:Lits<Object>类型的对象。listKey值为Object对象的属性名id,listValue值为Object对象的属性名catName。
最终option的value值为Object的id属性的值,option 的显示值为Object的catName属性的值。可以看效果图对照代码进行理解。如果还有疑问可以留言。