[英]JSTL Count the ForEach loop
我正在嘗試為項目列表中的每4項打印一些消息
<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>
但我得到的是異常,似乎i
沒有被視為數字
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)
我該如何實現這一目標?
一種方法是在scriplets的幫助下為每個循環聲明一個變量和增量。 但我想避免這個!
變量i
的類型為LoopTagStatus
。 要獲取int
,可以使用getCount()
或getIndex()
。
如果要打印第一個項目的消息,請使用:
<!-- `${i.index}` starts counting at 0 -->
<c:if test="${i.index % 4 == 0}">
<c:out value="Test" />
</c:if>
否則使用:
<!-- `${i.count}` starts counting at 1 -->
<c:if test="${i.count % 4 == 0}">
<c:out value="Test" />
</c:if>
varStatus
的類型為LoopTagStatus
( JavaDoc )。 所以你必須使用i
的屬性count
:
<c:if test="${i.count % 4 == 0}">
<c:out value="Test" />
</c:if>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.