[java] jstl의 foreach 루프에서 인덱스 값을 얻는 방법

request다음과 같은 개체에 값이 설정되어 있습니다.

String[] categoriesList=null;
categoriesList = engine.getCategoryNamesArray();
request.setAttribute("categoriesList", categoriesList );

그리고 이것이 내가 jsp 페이지에서 반복하는 방법입니다.

<% if(request.getAttribute("categoriesList") != null) { %>
<c:forEach var="categoryName" items="${categoriesList}">
   <li><a onclick="getCategoryIndex()" href="#">${categoryName}</a></li>
</c:forEach>
<% }%>

각 요소의 색인을 가져 와서 JavaScript 함수에 전달하는 방법은 무엇입니까 onclick="getCategoryIndex()"?



답변

varStatus 를 사용 하여 색인 c : forEach varStatus 속성 을 가져옵니다.

<c:forEach var="categoryName" items="${categoriesList}" varStatus="loop">
    <li><a onclick="getCategoryIndex(${loop.index})" href="#">${categoryName}</a></li>
</c:forEach>


답변

이제 비슷한 문제에 직면 해 있습니다. 이제 더 많은 옵션이 있음을 이해합니다. varStatus = “loop”, 여기에 루프의 인덱스를 보유 할 변수가 있습니다.

Zeor base index 또는 1 one base index를 읽는 데 사용할 수 있습니다.

${loop.count}` it will give 1 starting base index.

${loop.index} it will give 0 base index as normal Index of array 0부터 시작합니다.

예 :

<c:forEach var="currentImage" items="${cityBannerImages}" varStatus="loop">
<picture>
   <source srcset="${currentImage}" media="(min-width: 1000px)"></source>
   <source srcset="${cityMobileImages[loop.count]}" media="(min-width:600px)"></source>
   <img srcset="${cityMobileImages[loop.count]}" alt=""></img>
</picture>
</c:forEach>

자세한 정보는이 링크 를 참조하십시오.


답변

다음 varStatus과 같은 속성을 사용할 수 있습니다 .

<c:forEach var="categoryName" items="${categoriesList}" varStatus="myIndex">

myIndex.index 는 색인을 제공합니다. 다음 myIndexLoopTagStatus 객체입니다.

따라서 다음과 같이 javascript 메소드로 보낼 수 있습니다.

<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>


답변

<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

위 줄은 나에게 오류를주고 있었다. 그래서 나는 나를 위해 잘 작동하는 방식으로 아래에 적었습니다.

<a onclick="getCategoryIndex('<c:out value="${myIndex.index}"/>')" href="#">${categoryName}</a>

다른 사람이 같은 오류를받을 수도 있습니다. 이 사람들 좀 봐!


답변

이것은 나를 위해 작동합니다.

<c:forEach var="i" begin="1970" end="2000">
    <option value="${2000-(i-1970)}">${2000-(i-1970)}
     </option>
</c:forEach>


답변