顾名思义,iterator标签主要用于迭代输出Collection接口的子接口的实现类(如List、Set、Map与数组等)的元素,用value属性指定需要遍历的结合对象。
其语法格式如下:
<s:iterator value="集合对象" id="每次迭代的引用" status="迭代状态实例">
标签体
</s:iterator>
value------>通过OGNL表达式指定一个待迭代的集合对象,如果未指定该属性,默认使用ValueStack栈顶的集合。
id ---------->指定每次迭代的引用,供标签体内的其他组件调用。
status----->指定每次迭代状态的引用,若设置了此属性,则每次迭代均会生成一个IteratorStatus实例,IteratorStatus实例提供了几个非常有用的方法供标签体内的其他组件调用:
1、int getCount()方法:返回目前为止共迭代输出过的元素个数;
2、int getIndex()方法:返回当前迭代元素的索引号,所谓索引号就是一个从0开始的序号;
3、boolean isEven()方法:返回当前迭代元素的索引号是否为偶数;
4、boolean isFirst()方法:返回当前迭代元素是否为第一个元素;
5、boolean isLast()方法:返回当前迭代元素是否为最后一个元素;
6、boolean isOdd()方法:返回当前迭代元素的索引号是否为奇数;
在action类中,可以测试的类型有:
1、demoList = new ArrayList(); demoList.add("内容"); 有序
2、hashSet = new HashSet(); hashSet.add("内容"); 无序
3、treeSet = new TreeSet(); treeSet.add("内容"); 有序
4、demoMap = new HashMap(); demoMap.put("内容"); 无序
在前台jsp页面中示例:
<s:iterator value="demoList" id="row" status="st">
<s:property value="#st.count"/>、<s:property value="row"/>
<s:if test="#st.add">(奇数行)</s:if>
<s:else>(偶数行)</s:else><br/>
</s:iterator>