簡體   English   中英

循環增量計數器

[英]Increment counter with loop

這個問題與我之前的問題有關:

Jsp迭代對象列表

我想在我的for循環中插入從0開始的計數器,到目前為止我嘗試了幾種組合:

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>

第一種方法的問題是外部循環有3個項目,內部循環有7個項目,因此對於每個外部項目,計數從0開始。第二個我得到編譯錯誤。 這基本上是我想要的:

counter = 0;
outer for loop 
    inner for loop 
       counter++;
       //cout/echo/print counter value should start from 0
    end inner loop
end outer loop

我只是不完全熟悉語法。 謝謝

請嘗試以下方法:

<c:set var="count" value="0" scope="page" />

//in your loops
<c:set var="count" value="${count + 1}" scope="page"/>

varStatus引用了LoopTagStatus ,它有一個getIndex()方法。

所以:

<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>

也可以看看:

您可以在c:forEach循環中使用varStatus

在您的第一個示例中,您可以使計數器正常工作,如下所示......

<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>

是什么讓我進入這個頁面是我在一個頁面內設置然后在包含頁面的內部我做了增量

這是問題所在

所以要解決這個問題,只需在聲明變量或增量時使用scope="request"

//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" />

希望這能節省你的時間

暫無
暫無

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

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