先简述一下iterator的介绍:
iterator标签用于对集合进行迭代,这里的集合包含List、Set和数组。
<s:set name="list" value="{'zhangming','xiaoi','liming'}" />
<s:iterator value="#list" status="st">
<font color=<s:if test="#st.odd">red</s:if><s:else>blue</s:else>>隔行变色的效果
<s:property /></font><br>
</s:iterator>
value:可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。
id:可选属性,指定集合里元素的id。
status:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:
int getCount(),返回当前迭代了几个元素。
int getIndex(),返回当前迭代元素的索引。
boolean isEven(),返回当前被迭代元素的索引是否是偶数
boolean isOdd(),返回当前被迭代元素的索引是否是奇数
boolean isFirst(),返回当前被迭代元素是否是第一个元素。
boolean isLast(),返回当前被迭代元素是否是最后一个元素。
第一种,直接指定他的属性,但是这种问题在于必须是循环中的数据足够多,若是本来list中有三条数据,但是你想显示前五条,写成
begin="0" end="4"这种的就会报java.lang.IndexOutOfBoundsException: Index: 2, Size: 2的错误。
<s:iterator value="systemBulletin2List" id="bean" begin="0" end="1">
</s:iterator>
第二种:
<s:iterator value="systemBulletin2List" id="bean" status="sta">
<s:if test="#sta.index<5">
//主要是显示前5行
</s:if>
</s:iterator>
若是想一行显示5个怎么办?
<s:iterator value="systemBulletin2List" id="bean" status="st">
<s:if test="(#st.index+1) % 5 == 0 ">
<br />//每行5个
</s:if>
</s:iterator>