我正在使用Struts iterator标记并尝试在1次迭代中获取列表中的3个元素。
这就是我所拥有的。
<s:iterator status="stat" value="(secondResultSet.size()/3).{ #this}" >
<s:property value="#stat.count" /> <!-- Note that "count" is 1-based, "index" is 0-based. -->
<s:property value="%{secondResultSet.get(#stat.index).altId}"/>
<s:property value="%{secondResultSet.get(#stat.index+1).altId}"/>
<s:property value="%{secondResultSet.get(#stat.index+2).altId}"/>
</s:iterator>
我的列表有18个元素,在一次迭代中我想打印出3个元素。这就是为什么我将列表的长度除以3.因此循环将运行6次...总共打印出18个元素。
对于这个例子,我的列表包含的不同altId是:41 - 58(18)。但是,我的代码打印出以下内容
First Iteration: 41 42 43
Second Iteration: 42 43 44
Third Iteration: 43 44 45
所以看起来计数器没有得到更新。有人可以帮我这个吗?
答案 0 :(得分:0)
其他人试图这样做......
最好的方法是在你的班级中创建列表,如下所示:
public void generateIteratorList()
{
iterList = new ArrayList();
int value = 0;
for (int i = 0; i < (getSecondResultSet().size()/3); i++)
{
iterList.add(value);
value+=3;
}
}
然后使用s:iterator标签,如:
<s:iterator status="stat" value="iterList" >
<s:property value="%{secondResultSet.get(top).altId}" />
<s:property value="%{secondResultSet.get(top+1).altId}" />
<s:property value="%{secondResultSet.get(top+2).altId}" />
</s:iterator>