Если это константы всего приложения, просто поместите их в область приложения во время запуска приложения. Для этого вы можете использовать метод init()
произвольного сервлета или, что лучше, ServletContextListener
.
@WebListener
public class Config implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
Map<String, String> creditCardTypes = new LinkedHashMap<String, String>();
creditCardTypes.put("M0", "MasterCard");
creditCardTypes.put("D0", "Discover");
// ...
event.getServletContext().setAttribute("creditCardTypes", creditCardTypes);
}
// ...
}
(обратите внимание, что я использовал LinkedHashMap
, поскольку он поддерживает порядок вставки в отличие от HashMap
)
Таким образом, он доступен как ${creditCardTypes}
EL в любой JSP. Затем вы можете использовать JSTL <c:forEach>
для его итерации. Он также поддерживает итерации по Map
, и каждая итерация будет возвращать Map.Entry
, что в свою очередь имеет методы getKey()
и getValue()
, которые также доступны в EL.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<select id="creditCardType" title="select card type" name="creditCardType">
<c:forEach items="${creditCardTypes}" var="creditCardType">
<option value="${creditCardType.key}">${creditCardType.value}</option>
</c:forEach>
</select>