2013-03-31 3 views
2

내 JSP에 모델 속성 (이름을 포함하는 List)이 있습니다. 예 : myListJSTL forEach를 사용하여 사용자 정의 구조를 구현하는 방법은 무엇입니까?

이제는 for each를 사용하여 JSP의 목록을 쉽게 반복 할 수 있습니다.

<c:forEach items="${myList}" var = "singleItem" varStatus="status"> 
    ${singleItem.name} 
</c:forEach> 

잘 작동합니다.

다음
<div id="top"></div> 
     <p>name1</p> 
     <p>name2</p> 
    <div id="bottom"></div> 

    <div id="top"></div> 
     <p>name3</p> 
     <p>name4</p> 
    <div id="bottom"></div> 

    <div id="top"></div> 
     <p>name5</p> 
     <p>name6</p> 
    <div id="bottom"></div> 

NAME1, NAME2 등 myList에 있습니다 이제 내 요구 사항은 내가 보여줄 필요가 구조를했습니다 것입니다. 그렇다면 위의 출력 결과를 얻을 수있는 방식으로 forEach 루프를 실행하는 방법은 무엇입니까? 나는 막혔다. 도와주세요. :(

+2

체크 아웃 : http://stackoverflow.com/questions/5884638/jstl-foreach-get-next-object –

답변

6

처음으로 skaffman이 제안한 대답뿐 아니라 개인적으로도지지를 얻은 Sotirios의 대답은 초기 문제에 대한 진정한 해결 방법이지만, NPE 또는 사전에 수표가 필요합니다.

나는 확실히 모든 '추가'마크 업 태그 (귀하의 경우 <div> 태그)처럼, 필요시 삽입해야하는 대체, 또는 '직선'방식으로, 다음 것이다

: 또한

<c:set var="length" value="${fn:length(myList)}"/> 
<c:forEach items="${myList}" var = "singleItem" varStatus="status"> 
    <c:if test="${status.index % 2 == 0}"> 
     <div class="top"></div> 
    </c:if> 
    <p>${singleItem.name}</p> 
    <c:if test="${(status.index % 2 == 1) or (status.index + 1 == length)}"> 
     <div class="bottom"></div> 
    </c:if> 
</c:forEach> 

을 스타일 클래스에 <div>의 ID를 대체하여 JSP에서 중복 ID를 방지해야합니다.

+0

굉장합니다. 이것은 우아한 해결책입니다. 고마워, 스컹 셀. @Sotirios 덕분에! 이것을 내 코드에 구현하고 이것을 대답으로 표시하겠습니다. 고마워요, 그것은 저에게 많은 시간과 두통을 덜어 줬습니다! – LittleLebowski

+0

여러분을 환영합니다! – skuntsel

+2

'length' 변수가 실제로 중복된다는 것을 알 수 있습니다. 간단한'(status.last)'를'(status.index + 1 == length) '로 변경하면 코드를 더 짧게 할 수 있습니다. 처음에는 0이 아닌 크기의 길이를 ''루프 전체를 포함하는 ''조건으로 사용하려고했지만 나중에 중복되었으므로 폐기했습니다. – skuntsel

3

사용이 varStatusstep 두 개의리스트 인덱스마다 액세스 속성.

<c:forEach items="${myList}" var="singleItem" varStatus="status" step="2"> 
    <div id="top"></div> 
     <p>${myList[status.index].name}</p> 
     <p>${myList[status.index+1].name}</p> 
    <div id="bottom"></div> 
</c:forEach> 

을 대신 var를 사용하여, 당신은 인덱스 목록에 액세스합니다. 당신이있는 경우에 당신은 분명히 확인해야 심지어 요소 수 또는 NPE를 얻을 수도 있습니다.

+0

와우,보기 깔끔함. 솔루션을 주셔서 감사합니다. 그러나 목록에는 심지어 홀수 개의 요소가있을 수 있습니다. 그것을 고치는 방법? – LittleLebowski

+0

@ skuntsel의 답변을 확인하십시오. –

관련 문제