index for java jsp foreach jstl

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>