728x90

프로젝트를 진행 중에 한 리스트에서 연속된 두 VO를 사용해야 하는데

어떻게 할 수 있을까 고민하다가 생각난 것을 적용해보니 잘 되길래 공유해봅니다.

 

JSTL core의 foreach 태그에는 여러 속성이 있지만 주로 사용하는 방법은 아래와 같습니다.

<c:foreach var="vo" items="${List}">
	<div> ${vo.title} </div>
</c:foreach>

 이렇게 되면 items에 있는 변수가 인덱스 순으로 vo에 담겨서 진행하게 되는데 여기에 속성 몇 개를 추가하면 됩니다.

 

<c:foreach var="vo" items="${List}" varStatus="status" step="2">
	<div> ${vo.title} </div>
    <div> ${List[status.index + 1].title} </div>
</c:foreach>

varStatus 속성으로 설정한 status로 현재 반복문의 인덱스를 받아올 수 있습니다.

step 속성으로는 반복문을 첫 번째 항목부터 시작하여 스텝마다 진행한다는 뜻입니다.

이를 활용하면 세 개씩도 한 반목문 안에 사용할 수 있습니다.

 

예를 들어 아래와 같이 10까지의 숫자가 들어있는 리스트가 있다고 했을 때

String[] list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

아래의 코드를 사용하면 1, 3, 5 ,7, 9만 출력합니다.

<c:foreach var="num" items="${list}" varStatus="status" step="2">
	<div> ${num} </div>
</c:foreach>

여기서 step 속성만 3으로 바꾸면 1, 4, 7, 10이 출력됩니다.

728x90

+ Recent posts