티스토리 뷰
JSTL에서 forEach와 forTokens을 실제 사용하다 보면 JSTL만으론 해결이 안 될 거 같은 상황이 있는데요. JSTL 책을 읽다 보니 몇몇 상황에서는 JSTL만으로 쓸 수 있도록 한 게 있어 간단히 정리해 올려 봅니다. 목록(Collection) 중에 일부에 대해서만 어떤 처리를 하고 싶을 때가 있습니다. 예를 들면, 앞에 5개까지만 출력한다 라든지 짝수번째만 출력한다든지요. 이럴 경우는 다음 Attribute를 이용하면 됩니다. * begin: 반복에 사용될 것 중 첫번째 항목의 Index. 0부터 시작한다. 정의되지 않으면 0. * end: 반복에 사용될 것 중 마지막 항목의 Index. 정의되지 않으면 목록의 갯수에서 1개 뺀 값이겠죠. * step: 반복할 때마다 건너 뛸 index 갯수. for 문의 i 값에 더해지는 것과 같은 개념입니다. 기본은 1 입니다. 예를 들어 목록 앞에 5개만 출력한다면 다음과 같이 하시면 됩니다. <ul> <c:forEach var="studentName" items="list" end="4"> <li>${studentName }</li> </c:forEach> </ul> 같은 식으로 5번째부터 끝까지 출력하시려면 begin에 4값을 넣으시면 되겠죠. forEach와 forTokens에 사용할 수 있는 Attribute 중에 varStatus 라는 게 있습니다. 이게 현재 루핑 상황 정보를 얻을 수 있는 건데요. 여기에 미리 정의된 변수로 다음 4가지 값을 접근할 수 있습니다. * index: 숫자값으로 items 에 정의한 목록(Collection)의 항목을 가리키는 Index입니다. 0부터 시작하겠죠. * count: 숫자값입니다. 루핑을 돌 때 현재 몇 번째 반복인지를 나타냅니다. 1부터 시작합니다. * first: boolean 값입니다. 현재 반복이 첫번째인지 여부를 나타냅니다. * last: boolean 값입니다. 현재 반복이 마지막인지 여부를 나타냅니다. 여기서 index와 count의 차이가 시작값이 0이냐, 1이냐 밖에 없다고 생각하기 쉬운데, 그렇지 않습니다. 앞 쪽 예처럼 begin을 4로 하게 되면 index는 4, 5, 6, 7, ... 로 나가지만 count는 여전히 1, 2, 3, 4가 됩니다. 혹는 step 값을 2로 주면 index 값이 0, 2, 4, 6, ... 이 되지만 여전히 count는 1, 2, 3, 4가 됩니다. 위 변수를 가지고 사용할 수 있는 가장 흔한 경우가 각 항목 사이에 무언가를 넣어야 할 때 입니다. 예를 들어, 목록 사이에 컴마(,)를 넣는 경우말이죠. list 에 성명 목록이 들어 있고 그 사이에 컴마를 넣고 싶다면, 다음과 같이 하면 됩니다. <c:forEach var="studentName" items="list" varStatus="status"> ${studentName }<c:if test="${not status.last }">, </c:if> </c:forEach> 혹은, 목록 중 첫번째만 강조를 하고자 한다면 다음과 같이 하면 되겠죠. <ul> <c:forEach var="studentName" items="list" varStatus="status"> <c:if test="${status.first }"><li><strong>${studentName }</strong></li></c:if> <c:if test="${not status.first }"><li>${studentName }</li></c:if> </c:forEach> </ul> 지금 생각해 보니 앞뒤로 감싸는 태그를 목록이 없으면 아예 안 나오도록 하려면 다음처럼 해도 되겠네요. <c:forEach var="studentName" items="list" varStatus="status"> <c:if test="${status.first }"><ul></c:if> <li>${studentName }</li> <c:if test="${status.last }"></ul></c:if> </c:forEach> |
'Development' 카테고리의 다른 글
[JQuery] trim (0) | 2010.11.10 |
---|---|
[Jsp,EL,JSTL] jsp 페이지 내에서 일정 글자수 이상 자르기 (3) | 2010.11.09 |
[JQuery] jsp, javascript, jquery 을 이용한 전체CheckBox 선택/해제 및 선별법 (0) | 2010.10.26 |
[Android] Map Api 좌표체계와 변환방법 (0) | 2010.10.18 |
[JQuery] JQuery plugIn JqGrid colModel Properties (0) | 2010.10.17 |
댓글
최근에 올라온 글
글 보관함
- Total
- Today
- Yesterday