控制标签
Append
用于将多个集合拼接为一个新的集合,类似于List的addAll函数
静态实现对已知List的合并
<s:append id=”newList”>
<s:paramvalue=”{‘a1’,’a2’,’a3’}” />
<s:param value=”{‘a4’,’a5’,’a3’}”/>
</s:append>
使用<s:append>和 <c:iterator>。也可以将多个Map拼接为一个新的Map,更可以将一个Map和一个List拼接起来,如:
<s:append id=”newList”>
<s:paramvalue=”{‘a1’,’a2’,’a3’}” />
<s:param value=”#{‘li’:’spring’,’wang’:’struts’}”/>
</s:append>
<table border="1" width="240">
<s:iterator value="#newList" status="st">
<tr <s:iftest="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property value="key"/></td>
<td><s:property value="value"/></td>
</tr>
</s:iterator>
</table>
Generator
将指定字符串分割成多个子串,临时生成的多个子串可以使用Iterator进行迭代,类似于String的split函数,在jstl的function标签中有相同实现。
id:这是一个可选属性,指定id后,则生成的标签在pageContext属性中
count:这是一个可选属性,该属性指定生成集合中元素的总数,多余的丢弃
separator:这是一个必填属性,指定用于解析的分隔符
Merge
用于将多个集合拼接成一个新的集合,与append用法类似,区别是拼接后集合的顺序不同,如 {a1,a2,a3}和{b1,b2,b3}使用append拼接后是{a1,a2,a3,b1,b2,b3}; 而使用merge拼接后是 {a1,b1,a2,b2,a3,b3}
Sort
用于对集合进行排序,需要提供自己的Comparator,有用的属性是comparator:指定自定义的Comparator实例,需要实现java.util.Comparator接口; source, var:存放排序后结果。
<s:sort source="{'J2EE','Ajax','Spring2.0'}"comparator="#request.mycomparator">
<s:iterator status="st">
<tr> <s:iftest="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property/></td>
</tr>
</s:iterator>
Subset
用于截取集合的部分元素,形成新的集合 ,有用的属性是count source start decider。
count:可选属性,指定子集中元素的个数,默认取得源集合的所有元素
source:可选属性,指定源集合,如果不指定,默认取得valueStack栈顶的集合,一般都会指定
start:可选属性,指定从源集合的第几个元素开始截取,,默认从第一个元素(即start=0)开始
decider:可选属性,由开发者自己决定是否选中该元素
<%@ page contentType="text/html;charset=GBK" language="java"%>
<%@taglib prefix="s"uri="/struts-tags"%>
<html>
<head>
<title>使用s:subset标签截取集合元素</title>
</head>
<body>
<table border="1" width="200">
<s:subset source="{'Java','Spring2.0','J2EE','Ajax','WebWork'}"
start="1" count="3">
<s:iterator status="st">
<tr <s:iftest="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property/></td>
</tr>
</s:iterator>
</s:subset>
</table>
</body>
</html>
还可以自己决定选择标准,,使用步骤如下:
1. 实现SubsetIteratorFilter.Decider 接口 class MyDeciderimplements Decider
2. 在jsp中使用 <s:bean> 创建该类的对象 <s:bean id=”de” name=”lee.MyDecider” />
3. 对<s:subset decider=”#de”>
如下实例:
<%@ pagecontentType="text/html; charset=GBK" language="java"%>
<%@taglib prefix="s"uri="/struts-tags"%>
<html>
<head>
<title>使用s:subset标签截取集合元素</title>
</head>
<body>
<s:bean id="mydecider" name="lee.MyDecider"/>
<table border="1" width="200">
<s:subset source="{'Java','Spring2.0','J2EE','Ajax','WebWork'}" decider="#mydecider">
<s:iterator status="st">
<tr <s:iftest="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property/></td>
</tr>
</s:iterator>
</s:subset>
</table>
</body>
</html>