2013-03-26 18 views
8

Sto lavorando su JSP con Struts2, devo eseguire l'iterazione su due elenchi e modificare il codice di background di ogni <tr/> stampato.Struts2 incrementa un set precedente <s:set /> valore

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

Ho bisogno di incrementare il mio contatore ogni passo sul ciclo interno. C'è un modo per incrementare il mio controvalore con un semplice tag struts? So che potrei usare lo scriptlet Java, ma preferisco mantenere il JSP libero, se possibile.

+0

Oltre alla risposta di Roman, è consigliabile utilizzare un ternario per accorciare la logica decisione di classe –

+0

Che cosa si intende con il ternario? – Emaborsa

risposta

13

Non è necessario creare una variabile di riferimento, utilizzare solo #i.index o #i.count all'interno dell'iteratore. È già incrementato dal tag iteratore stesso.

Nota che "contare" è a base 1, "indice" è a base 0.

Controllare sempre il docs.

Se ancora necessario il proprio contatore

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

incremento

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

È necessario un contatore separato perché deve essere basato sul ciclo interno e non resettare quando il ciclo esterno si solleva. –

+0

Non posso usare il contatore base di un iteratore, se controlli il mio codice vedrai che né il ciclo esterno né il ciclo interno mi daranno un contatore destro che si alterna da pari a pari, per impostare lo sfondo colore (variabile trclass); in ogni caso non importa se inizia con 0 o 1 .... Prima di postare la mia domanda ho provato la tua soluzione () ma mi ha dato un errore traducendo la pagina JSP. Domani ci proverò di nuovo ... – Emaborsa

+0

per verificare che dispari o addirittura si possa usare 'j.even' o' j.odd' è valori booleani. L'ultima affermazione dovrebbe funzionare, non è vero? –