Счетчик приращений с петлей - PullRequest
62 голосов
/ 01 февраля 2011

Этот вопрос связан с моим предыдущим вопросом:

Перебор списка объектов с итерацией JSP

Я хочу вставить счетчик, который начинается с 0, в цикл for, яДо сих пор пробовал несколько комбинаций:

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

Я просто не совсем знаком с синтаксисом.спасибо

Ответы [ 4 ]

165 голосов
/ 01 февраля 2011

Попробуйте следующее:

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

//in your loops
<c:set var="count" value="${count + 1}" scope="page"/>
39 голосов
/ 01 февраля 2011

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>

Смотри также:

3 голосов
/ 16 октября 2012

Вы можете использовать varStatus в цикле c: forEach

В вашем первом примере вы можете заставить счетчик работать должным образом следующим образом ...

<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>
0 голосов
/ 24 мая 2017

что привело меня к этой странице, так это то, что я установил внутри страницы, затем внутри включенной страницы я сделал приращение

, и вот проблема

, поэтому, чтобы решить такую ​​проблемупросто используйте 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" />

надеюсь, это сэкономит ваше время

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...