Создайте реализацию ServletContextListener
, которая помещает значения перечисления в область приложения во время запуска веб-приложения, чтобы она была доступна в EL на ${carrierCodes}
. Этот класс можно использовать повторно для всех других вещей, которые вы хотели бы сделать один раз при запуске веб-приложения.
@WebListener
public class Config implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
event.getServletContext().setAttribute("carrierCodes", CarrierCode.values());
}
@Override
public void contextDestroyed(ServletContextEvent event) {
// NOOP
}
}
Обратите внимание, что я использовал Enum#values()
вместо неуклюжего Class#getEnumConstants()
метода. Возвращает массив всех значений перечисления.
Затем, в JSP, просто используйте JSTL <c:forEach>
для его итерации.
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<select name="carrierCode">
<c:forEach items="${carrierCodes}" var="carrierCode">
<option value="${carrierCode.mfCode}">${carrierCode}</option>
</c:forEach>
</select>