Struts2 increment a previous set <s:set /> value

Emaborsa picture Emaborsa · Mar 26, 2013 · Viewed 24.3k times · Source

I'm working on JSPs with Struts2, I have to iterate on two lists, and change the background code of each <tr/> printed.

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

I need to increment my counter every step on the inner loop. Is there a way to increment my counter value by a simple struts tag? I know I could use Java scriptlet but I rather keep the JSP clear if possible.

Answer

Roman C picture Roman C · Mar 26, 2013

You aren't required to create a reference variable just use #i.index or #i.count inside the iterator. It's already incremented by the iterator tag itself.

Note that "count" is 1-based, "index" is 0-based.

Always check the docs.

If you still need your own counter

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

increment

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