2013-03-26 6 views
8

Ich arbeite an JSPs mit Struts2, ich muss auf zwei Listen iterieren, und ändern Sie den Hintergrundcode der einzelnen <tr/> gedruckt.Struts2 inkrementieren einen vorherigen Satz <s:set /> Wert

Meine JSP-Snippet:

<s:set var="counter" value="0" scope="page" /> 
<s:iterator value="listaContoCapitale" status="i"> 
    <s:iterator value="utilizzi" status="j"> 

    <s:if test="#counter == 0 || #counter % 2 == 0"> 
     <s:set var="trclass" value="'rigaSfondo1'" scope="page" /> 
    </s:if> 
    <s:else> 
     <s:set var="trclass" value="''" scope="page" /> 
    </s:else> 
    <tr class="${trclass}"> 
     ....tds 
    </tr> 
    </s:iterator> 
    <s:set var="counter" value="here i have to change its value (increment it by1)" /> 
</s:iterator> 

Ich brauche meine Zähler auf der inneren Schleife jeden Schritt zu erhöhen. Gibt es eine Möglichkeit, meinen Zählerwert um ein einfaches struts-Tag zu erhöhen? Ich weiß, dass ich Java Scriptlet verwenden könnte, aber ich halte die JSP lieber für möglich, wenn möglich.

+0

Neben Roman Antwort benötigen, sollten Sie eine ternäre mit dem Klassenentscheidungslogik –

+0

zu verkürzen Was Sie mit ternären bedeuten sie? – Emaborsa

Antwort

13

Sie müssen keine Referenzvariable erstellen, verwenden Sie einfach #i.index oder #i.count innerhalb des Iterators. Es ist bereits um den Iterator-Tag selbst erhöht.

Beachten Sie, dass "count" 1-basiert ist, "index" 0-basiert.

Überprüfen Sie immer die docs.

Wenn Sie noch Ihre eigenen Zähler

<s:set var="counter" value="0"/> 

Zuwachs

<s:set var="counter" value="%{#counter+1}"/> 
+0

Benötigt einen separaten Zähler, da er auf der inneren Schleife basieren muss und nicht zurückgesetzt wird, wenn die äußere Schleife hochgeht. –

+0

Ich kann nicht den grundlegenden Zähler eines Iterators verwenden, wenn Sie meinen Code überprüfen, werden Sie sehen, dass weder die äußere Schleife noch die innere Schleife mir einen rechten Zähler geben würde, der von ungerade zu gerade wechselt, um den Hintergrund zu setzen Farbe (trclass Variable); in jedem Fall spielt es keine Rolle, ob es mit 0 oder 1 beginnt .... Bevor ich meine Frage posten habe, habe ich Ihre Lösung ausprobiert () aber es gab mir einen Fehler durch die Übersetzung der JSP-Seite. Morgen werde ich es wieder versuchen ... – Emaborsa

+0

, um zu überprüfen, ob Sie "j.even" oder "j.odd" verwenden können, es ist boolesche Werte. Die letzte Aussage sollte funktionieren, oder? –