it-swarm.com.de

Inkrementzähler mit Schleife

Diese Frage steht im Zusammenhang mit meiner vorherigen Frage:

Jsp durch Objektliste iterieren

Ich möchte in meine for-Schleife einen Zähler einfügen, der mit 0 beginnt. Bisher habe ich verschiedene Kombinationen ausprobiert:

1.

<c:forEach var="tableEntity" items='${requestScope.tables}'>
   <c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="count">            
        <c:out value="${count}" />
    </c:forEach>
</c:forEach>

2.

<c:set var="count" value="0" scope="page" />
<c:forEach var="tableEntity" items='${requestScope.tables}'>
   <c:forEach var="rowEntity" items='${tableEntity.rows}'>      
   <%=count++%>  
<c:out value="${count}" />
    </c:forEach>
</c:forEach>

Das Problem beim ersten Ansatz ist, dass die äußere Schleife 3 Elemente und die innere Schleife 7 Elemente enthält. Für jedes äußere Element beginnt die Zählung bei 0. Beim zweiten wird ein Kompilierungsfehler angezeigt. Hier ist im Grunde, was ich will:

counter = 0;
outer for loop 
    inner for loop 
       counter++;
       //cout/echo/print counter value should start from 0
    end inner loop
end outer loop

Ich bin mit der Syntax einfach nicht ganz vertraut. Danke dir

62
London

Versuche Folgendes:

<c:set var="count" value="0" scope="page" />

//in your loops
<c:set var="count" value="${count + 1}" scope="page"/>
166
dogbane

Das varStatus verweist auf LoopTagStatus , das eine getIndex() -Methode hat.

So:

<c:forEach var="tableEntity" items='${requestScope.tables}' varStatus="outer">
   <c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="inner">            
        <c:out value="${(outer.index * fn:length(tableEntity.rows)) + inner.index}" />
    </c:forEach>
</c:forEach>

Siehe auch:

39
BalusC

Sie können varStatus in Ihrer c: forEach-Schleife verwenden

In Ihrem ersten Beispiel können Sie den Zähler folgendermaßen zum Funktionieren bringen ...

<c:forEach var="tableEntity" items='${requestScope.tables}'>
   <c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="count">            
        my count is ${count.count}
    </c:forEach>
</c:forEach>
3
Andy Brudtkuhl

was mich zu dieser Seite geführt hat, ist, dass ich innerhalb einer Seite dann innerhalb einer eingeschlossenen Seite das Inkrement vorgenommen habe

und hier ist das problem

um ein solches Problem zu lösen, benutze einfach scope="request" wenn Sie die Variable oder das Inkrement deklarieren

//when you set the variale add scope="request"
<c:set var="nFilters" value="${0}" scope="request"/>
//the increment, it can be happened inside an included page
<c:set var="nFilters" value="${nFilters + 1}"  scope="request" />

ich hoffe, das spart Ihnen Zeit

0