Справка по тегу итератора struts2 - PullRequest
0 голосов
/ 02 июня 2009

Я использую тег Struts и пытаюсь получить 3 элемента моего списка за 1 итерацию.

Это то, что у меня есть.

<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

Похоже, счетчик не обновляется. Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 02 июня 2009

для того, кто пытается это сделать ...

Лучший способ - создать список в вашем классе следующим образом:

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>
...