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


106

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()"?

답변:


234

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

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

Uncaught ReferenceError: 루프는 정의되지 않았으며 노력을 위해 +1합니다
Java Questions

요소의 onclick을 표시
자바 질문

varStatus 값에는 루프 반복까지의 값이 포함되어 있기 때문입니다. 그 후에는 값이 유효한 값이 아닙니다. 그래서 당신 만이 예외가 있습니다. 어떤 목적을 위해 당신은 인덱스 필요
NEWUSER

각 요소의 index [location]이 문자열 배열에 들어 있는지 알아야합니다.
자바 질문

그것은 작동합니다 :) 내가 이렇게하면 onclick = "getCategoryIndex ($ {loop.index})"... 도움을 주셔서 감사합니다
자바 질문

19

이제 비슷한 문제에 직면 해 있습니다. 이제 더 많은 옵션이 있음을 이해합니다. 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>

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


11

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

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

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

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

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

나는이 얻을 Uncaught ReferenceError: myIndex is not defined 당신의 노력과 일을
자바 질문

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

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

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

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


0

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

<c:forEach var="i" begin="1970" end="2000">
    <option value="${2000-(i-1970)}">${2000-(i-1970)} 
     </option>
</c:forEach>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.