...
<div class="a">
<select>
<option value="A">에이</option>
<option value="B">비</option>
<option value="C">씨</option>
<option value="D">디</option>
</select>
</div>
<div class="a">
<select>
<option value="ONE">하나</option>
<option value="TWO">둘</option>
<option value="THREE">셋</option>
</select>
</div>
...
package com.bear.tanned.enums;
@Getter
@AllArgsConstructor
public enum MyAlphabet {
A("에이"),
B("비"),
C("씨"),
D("디");
private String label;
};
package com.bear.tanned.enums;
@Getter
@AllArgsConstructor
public enum MyNumber {
ONE("하나"),
TWO("둘"),
THREE("셋");
private String label;
};
<%@ page import="com.bear.tanned.enums.*" %>
...
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<div class="a">
<select>
<c:forEach items="MyAlphabet.values()" var="alpha">
<option value="${alpha}">${alpha.label}</option>
</c:forEach>
</select>
</div>
<div class="a">
<select>
<c:forEach items="MyNumber.values()" var="num">
<option value="${num}">${num.label}</option>
</c:forEach>
</select>
</div>
...
= thymeleaf의 fragment 같은 기능이 필요
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="a">
<select>
<c:forEach items="<%= ${enumList}" var="enumObj">
<option value="${enumObj}">${enumObj.label}</option>
</c:forEach>
</select>
</div>
<%
List enumList = request.getParameter("enumList");
%>
...
<%= enumList %>
...
<c:import url="./Child.jsp">
<c:param name="enumList" value="${MyAlphabet.values()}" />
</c:import>
<c:import url="./Child.jsp">
<c:param name="enumList" value="${MyNumber.values()}" />
</c:import>
...
...
<c:set var="enumList" value="${MyAlphabet.values()}" scope="request" />
<c:import url="./Child.jsp" />
<c:set var="enumList" value="${MyNumber.values()}" scope="request" />
<c:import url="./Child.jsp" />
...
...
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.bear.tanned.enums.*" %>
...
<c:set var="enumList" value="${MyAlphabet.values()}" scope="request" />
<c:import url="./Child.jsp" />
<c:set var="enumList" value="${MyNumber.values()}" scope="request" />
<c:import url="./Child.jsp" />
...
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div class="a">
<select>
<c:forEach items="<%= ${enumList}" var="enumObj">
<option value="${enumObj}">${enumObj.label}</option>
</c:forEach>
</select>
</div>
https://stackoverflow.com/a/6014342 (댓글 주목) 을 보고 다음과 같이 작성했는데 되네요. 이 방법도 알아두시면 좋을 것 같아요:
langauge 는 jsp 에 보내는 model 에 들어있는 필드라는 가정입니다. 별도로 패키지 import 는 필요 없습니다.
위 SO 글에도 나와있지만,
enumValues
를 지정하지 않아도 만들어주는게 피쳐라고 합니다 (...).korean 은 제가 만든 부분입니다.