본문 바로가기

프로그래밍

JSP/JSTL 의 forEach로 Enum내용 출력하기



JSP/JSTL 의 forEach로 Enum내용 출력하기

Enum을 쓰다가 내용의 일부나 혹은 전체를 꺼내고 싶을 때 사용한 방법입니다.

우선 Enum을 선언해야겠네요.
저는 순서가 있는 Map사용을 위해서 LinkedHashMap을 import하고 사용하였습니다.



Class가 아닌 enum으로 선언하였고, 
사용하기 위한 값들을 초기화 하면서 나열했습니다.

AA(1 , "A상태"),
BB (2 , "B상태"),
CC (3 , "C상태"),
DD (4 , "D상태");

그리고 값들을 불러낼때 사용할 함수들도 선언하였구요.


그리고 이 값들을 한번에 꺼낼 수 있도록 개별 함수를 만듭니다.



이제 이 값들을 JSTL에 사용할 것인데, 
저는 Spring MVC로 동작함에 따라 enum전체를 반환받아서 View에 할당하고 작업을 진행하였습니다.

JSP에서 testEnum이란 이름으로 enum을 사용할수 있게 설정했습니다.

아까 위에서 말씀드렸던 작업대로 진행하겠습니다.

1) enum에 설정한 값을 key를 통해 꺼내오는 동작

${testEnum[key값]}

단순히 배열에서 꺼내는 것과 동일하게 진행하면됩니다.

key가 "AA"라면 
결과는 
test.jsp

A상태 

가 나오게 됩니다.

2) c:forEach를 이용한 enum전체 출력

<c:forEach var="feVar" items="${testEnum}">
키값 : ${feVar.getKey()} 내용 : ${feVar.getValue()}<br>
</c:forEach>

결과는
test.jsp

키값 : AA 내용 : A상태
키값 : BB 내용 : B상태
키값 : CC 내용 : C상태
키값 : DD 내용 : D상태

이렇게 나오게 됩니다.
forEach에서 설정한 feVar로 items에 설정한 변수에 접근하여 순차적으로 값을 꺼내옵니다.
만약 아까 반환값을 LinkedHashMap이 아닌 HashMap이었다면 순서는 달라질 수 있습니다.

2) c:forEach를 이용한 enum 일부 출력

<c:forEach begin="0" end="2" step="1" var="feVar" items="${testEnum}">
키값 : ${feVar.getKey()} 내용 : ${feVar.getValue()}<br>
</c:forEach>

결과는 
test.jsp

키값 : AA 내용 : A상태
키값 : BB 내용 : B상태
키값 : CC 내용 : C상태

이렇게 나오게 됩니다.

만약 begin="2" end="3"으로 설정한다면

키값 : CC 내용 : C상태
키값 : DD 내용 : D상태

이렇게 나오겠지요?

forEach에는 다른 속성들이 많지만 제가 필요한건 이정도라 여기까지만 정리합니다~!