java - index - JSTL Cuenta el ciclo ForEach
jstl foreach list (2)
La variable i
es del tipo LoopTagStatus
. Para obtener un int
, puede usar getCount()
o getIndex()
.
Si desea imprimir un mensaje para el 1er artículo, utilice:
<!-- `${i.index}` starts counting at 0 -->
<c:if test="${i.index % 4 == 0}">
<c:out value="Test" />
</c:if>
otro uso:
<!-- `${i.count}` starts counting at 1 -->
<c:if test="${i.count % 4 == 0}">
<c:out value="Test" />
</c:if>
Intento imprimir algún mensaje por cada 4 elementos en la Lista de elementos
<c:forEach items="${categoryList}" var="category" varStatus="i">
<c:if test="${i%4 == 0}">
<c:out value="Test" />
</c:if>
<div class="span3">
<c:out value="a" />
</div>
</c:forEach>
Pero estoy por debajo de las excepciones, parece que no me tratan como número
java.lang.IllegalArgumentException: Cannot convert javax.servlet.jsp.jstl.core.LoopTagSupport$1Status@3371b822 of type class javax.servlet.jsp.jstl.core.LoopTagSupport$1Status to Number
at org.apache.el.lang.ELArithmetic.coerce(ELArithmetic.java:407)
at org.apache.el.lang.ELArithmetic.mod(ELArithmetic.java:291)
at org.apache.el.parser.AstMod.getValue(AstMod.java:41)
at org.apache.el.parser.AstEqual.getValue(AstEqual.java:38)
¿Cómo logro esto?
Una forma es declarar una variable e incrementar para cada ciclo con la ayuda de scriplets. ¡Pero me gustaría evitar esto!
varStatus
es del tipo LoopTagStatus
( LoopTagStatus
). Entonces debes usar el count
de propiedades de i
:
<c:if test="${i.count % 4 == 0}">
<c:out value="Test" />
</c:if>