java - valores - Incrementar contador con lazo
contadores y acumuladores java eclipse (4)
El varStatus
referencia a LoopTagStatus
que tiene un método getIndex()
.
Asi que:
<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>
Ver también:
Esta pregunta está relacionada con mi pregunta anterior:
Jsp iterar a través de la lista de objetos
Quiero insertar un contador que comience desde 0 en mi bucle for, hasta ahora he probado varias combinaciones:
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>
El problema con la primera aproximación es que el bucle externo tiene 3 elementos y el bucle interno tiene 7 elementos, por lo que para cada elemento externo el conteo comienza desde 0. El segundo que obtengo es el error de compilación. Aquí es básicamente lo que quiero:
counter = 0;
outer for loop
inner for loop
counter++;
//cout/echo/print counter value should start from 0
end inner loop
end outer loop
Simplemente no estoy totalmente familiarizado con la sintaxis. gracias
Lo que me llevó a esta página es que configuré una página y luego el interior de una página incluida, hice el incremento
y aquí esta el problema
entonces para resolver un problema así, simplemente use scope="request"
cuando declare la variable o el incremento
//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" />
espero que esto te ahorre tiempo
Pruebe lo siguiente:
<c:set var="count" value="0" scope="page" />
//in your loops
<c:set var="count" value="${count + 1}" scope="page"/>
Puede usar varStatus en su c: forEach loop
En su primer ejemplo, puede hacer que el contador funcione correctamente de la siguiente manera ...
<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>