UFO ET IT

루프가있는 증가 카운터

ufoet 2020. 11. 25. 21:43
반응형

루프가있는 증가 카운터


이 질문은 이전 질문과 관련이 있습니다.

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>

이 페이지로 이끄는 이유는 페이지 내에서 설정 한 다음 포함 된 페이지 내부에서 증분을 수행했다는 것입니다.

and here is the problem

so to solve such a problem, simply use scope="request" when you declare the variable or the increment

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

hope this saves your time

참고URL : https://stackoverflow.com/questions/4862605/increment-counter-with-loop

반응형