Cette question est liée à ma question précédente:
Jsp iterate dans la liste d'objets
Je veux insérer un compteur qui commence à 0 dans ma boucle for, j'ai déjà essayé plusieurs combinaisons:
<c:forEach var="tableEntity" items='${requestScope.tables}'>
<c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="count">
<c:out value="${count}" />
</c:forEach>
</c:forEach>
<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>
Le problème avec la première approche est que la boucle externe a 3 éléments et la boucle interne a 7 éléments, donc pour chaque élément externe, le compte commence à 0. Le second est une erreur de compilation. Voici essentiellement ce que je veux:
counter = 0;
outer for loop
inner for loop
counter++;
//cout/echo/print counter value should start from 0
end inner loop
end outer loop
Je ne suis tout simplement pas totalement familiarisé avec la syntaxe. Je vous remercie
Essayez ce qui suit:
<c:set var="count" value="0" scope="page" />
//in your loops
<c:set var="count" value="${count + 1}" scope="page"/>
Le varStatus
fait référence à LoopTagStatus
qui a une méthode getIndex()
.
Alors:
<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>
Vous pouvez utiliser varStatus dans votre boucle c: forEach
Dans votre premier exemple, vous pouvez obtenir le bon fonctionnement du compteur comme suit:.
<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>
ce qui m’a conduit à cette page est que j’ai placé dans une page puis à l’intérieur d’une page incluse, j’ai fait l’incrément
et voici le problème
pour résoudre un tel problème, utilisez simplement scope="request"
lorsque vous déclarez la variable ou l'incrément
//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" />
espérons que cela vous fera gagner du temps