2010-12-23 6 views
1

저는 Java로 프로그래밍 중이며 다른 요소가 현재와 유사한 점이 있는지 JSTL에서 반복하고 싶은 객체 목록이 있습니다. 그리고 그것은 단지 디스플레이 문제이기 때문에 나는 내 JSP에서 그것을하고 싶습니다.JSTL에서 중복 열 속성을 사용하여 행을 그룹화하는 방법 c : forEach

예를 들어 내 개체에 ID, 성 및 이름의 세 가지 속성이 있다고 가정 해 보겠습니다. ID는 가족의 식별자가 될 것이고 목록을 HTML 테이블에 표시하고 싶지만 내 목록을 반복하는 동안 목록의 나머지 부분을 확인하여 다른 가족 구성원이 있는지 확인할 수 있으므로 하나의 td 태그로 다시 그룹화 할 수 있습니다. .

 
1 | TOTO | James 
2 | FOE | Cameron 
2 | FOE | Jessica 
1 | TOTO | Pat 
3 | SAMPLE | Bob 

예상 결과 :

<table> 
    <tr><td>1</td><td>TOTO</td><td>James, Pat</td></tr> 
    <tr><td>2</td><td>FOE</td><td>Cameron, jessica</td></tr> 
    <tr><td>3</td><td>SAMPLE</td><td>Bob</td></tr> 
</table> 

다시, 이것은 기본적인 예입니다 당신은 내 모델 층에 다른 물체에 내 가족을 재편성 말해 유혹 수도 있지만 차라리하지 않는 게 좋을 하기 위해서.


편집 : 내 목록은 그래서 쉽게 다음 요소를 확인할 수 있습니다 ID로 정렬되어 있기 때문에 내가 while 루프를 암시하고있다. 그러나 다른 해결책은 나에게 좋을 것이다.

+0

예제의 목록이 나에게 보이지 않습니다. – dogbane

+0

예를 들어 봤지만 진짜 목록은 ID로 정렬 할 수 있습니다. 나는 순서대로 목록을 요구하지 않는 해결책을 찾은 경우를 대비하여 예제를 작성했습니다.) – Anth0

+0

제목에 실제 문제 (루핑이 아닌 그룹)가 설명되어 있지 않습니다. – EJP

답변

0

Map에 처리 된 성을 보유 할 수 있습니다.

<table> 
    <jsp:useBean id="processed" class="java.util.HashMap" /> 
    <c:forEach items="${persons}" var="person"> 
     <c:if test="${empty processed[person.lastName]}"> 
      <c:set target="${processed}" property="${person.lastName}" value="true" /> 
      <tr> 
       <td>${person.familyId}</td> 
       <td>${person.lastName}</td> 
       <td>${person.firstName} 
        <c:forEach items="${persons}" var="other"> 
         <c:if test="${person.lastName == other.lastName and person.firstName != other.firstName}"> 
          , ${other.firstName} 
         </c:if> 
        </c:forEach> 
       </td> 
      </tr> 
     </c:if> 
    </c:forEach> 
</table> 

그러나 이것은보기 측면이 아니라 (데이터) 모델 측면에서 수행되어야한다는 것에 동의합니다.

0

빈은 JSP가 아니라 그룹화를 수행해야합니다.

관련 문제