Ответ 1
Попробуйте следующее:
<c:set var="count" value="0" scope="page" />
//in your loops
<c:set var="count" value="${count + 1}" scope="page"/>
Этот вопрос связан с моим предыдущим вопросом:
Jsp итерирует список объектов через прокрутку
Я хочу вставить счетчик, который начинается с 0 в моем цикле for, я уже пробовал несколько комбинаций:
<c:forEach var="tableEntity" items='${requestScope.tables}'>
<c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="count">
<c:out value="${count}" />
</c:forEach>
</c:forEach>
<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>
Вы можете использовать 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>
что привело меня к этой странице, так это то, что я установил внутри страницы, затем внутри включенной страницы я сделал приращение
и вот проблема
поэтому для решения такой проблемы просто используйте 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" />
надеюсь, что это сэкономит ваше время