簡體   English   中英

JSTL計算ForEach循環

[英]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的類型為LoopTagStatusJavaDoc )。 所以你必須使用i的屬性count

<c:if test="${i.count % 4 == 0}">
    <c:out value="Test" />
</c:if>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM