2010-01-07 2 views
20

jstl을 사용하여 목록을 처리하려고합니다. 목록의 첫 번째 요소를 나머지 요소와 다르게 처리하려고합니다. 즉, 첫 번째 요소 만 표시되도록 설정하고 나머지는 숨겨야합니다.JSTL : 목록을 반복하지만 첫 번째 요소를 다르게 처리하십시오.

나는 부풀어 오르는 것처럼 보이며 작동하지 않습니다.

도움 주셔서 감사합니다.

<c:forEach items="${learningEntry.samples}" var="sample"> 
    <!-- only the first element in the set is visible: --> 
    <c:if test="${learningEntry.samples[0] == sample}"> 
     <table class="sampleEntry"> 
    </c:if> 
    <c:if test="${learningEntry.samples[0] != sample}"> 
     <table class="sampleEntry" style="display:hidden"> 
    </c:if> 

답변

44

c `

<c:forEach items="${learningEntry.samples}" var="sample" varStatus = "status"> 
    <table class="sampleEntry" ${status.first ? '' : 'style = "display:none"'}> 
</c:forEach> 
+0

사용 사례를 바탕으로 당신은 또한 foreach 루프 내부의 경우 문을 사용할 수 있습니다 은이 <c:if>없이, 심지어 단축 할 수' – davidcondrey

5

예, foreach 요소에 varStatus = "stat"를 선언하여 첫 번째인지 마지막인지 묻습니다. LoopTagStatus 유형의 변수입니다.

는 LoopTagStatus에 대한 문서입니다 : http://java.sun.com/products/jsp/jstl/1.1/docs/api/javax/servlet/jsp/jstl/core/LoopTagStatus.html 그것은 더 흥미로운 특성을 가지고 ...

<c:forEach items="${learningEntry.samples}" var="sample" varStatus="stat"> 
    <!-- only the first element in the set is visible: --> 
    <c:if test="${stat.first}"> 
     <table class="sampleEntry"> 
    </c:if> 
    <c:if test="${!stat.first}"> 
     <table class="sampleEntry" style="display:none"> 
    </c:if> 

편집 : axtavt에서 복사

그것은 <c:if>없이, 심지어 짧은 수행 할 수 있습니다 :

<c:forEach items="${learningEntry.samples}" var="sample" varStatus = "status"> 
    <table class="sampleEntry" ${status.first ? '' : 'style = "display:none"'}> 
</c:forEach> 
관련 문제