generator标签
使用generator标签可以将指定字符串按指定分隔符分成多个子串,临时生成的多个子串可以使用iterator标签来迭代输出。可以这样理解:generator将一个字符串转化成一个集合。在该标签的标签体内,整个临时生成的集合将位于ValueStack的顶端,蛋一旦该标签结束,该集合将被移出ValueStack
generator标签的属性:
- count :可选属性,该属性指定生成集合中元素的总数。
- separator :必填属性,指定用于解析字符串的分隔符。
- val:必填属性,指定被解析的字符串。
- converter:可选属性,指定一个转换器,该转换器负责将集合汇总的每个字符串转换成对象
- id:可选属性,如果指定了该属性,则将生成的集合放在pageContext属性中
<!-- 使用s:generator标签将一个字符串解析成集合-->
<s:generator val = " 'Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典' "
separator = ",">
<!-- 在generator标签内,该集合位于valuestack的栈顶,故此处迭代就是临时生成的集合-->
<s: iterator status = "st ">
<!-- 根据当前迭代项索引的奇偶来决定是否使用CSS样式-->
< tr <s:if test="#st.odd" > style ="background-color:#bbbbbb"</s:if> >
<td><s:property/></td>
</tr>
</s:iterator>
</s:generator>
下面代码使用generator标签,使用了count和id属性,如果指定了count属性,意味着集合中最多只能包含count个元素(就是前count个元素),指定了id属性,就可以将临时生成的集合放置到pageContext属性中。代码如下:
<s:generator val = " 'Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典' "
separator = "," id="bookes" count="2"/>
<%
java.util.Iterator i = (java.util.Iterator)pageContext.getAttribute("bookes") ;
while( i.hasNext() ) {
String s = (String) i.next(); %>
<tr><td><%=s%></td></tr>
<%}
%>
一下是1楼提出错误的代码:执行后的结果: