2009-06-02 61 views
0

我正在使用Struts iterator标记并尝试在1次迭代中获取我列表中的3个元素。struts2迭代器标记帮助

这就是我所拥有的。

<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

别人试图做到这一点...

最好的办法是在你的类来创建列表,像这样:

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>