0

我正在使用Struts 迭代器标记并尝试在 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

所以看起来计数器没有更新。有人可以帮我弄这个吗?

4

1 回答 1

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>
于 2009-06-02T15:00:49.643 回答