I have an enum class USState
. I would like to iterate through the states in a JSP.
Is it possible to access a list of USState
s without first setting such a list as an attribute? It seems that something as static as an enum should always be available, but I can't figure out how to do it.
Here's what I'm looking for: (except working)
<c:forEach var="state" items="${USState.values}" >
<option value="${state}">${state}</option>
</c:forEach>
You can also consider to wrap it in a Javabean like follows:
package com.stackoverflow.q2240722;
public class StateBean {
public State[] getValues() {
return State.values();
}
}
This way it's accessible by <jsp:useBean>
:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<jsp:useBean id="stateBean" class="com.stackoverflow.q2240722.StateBean" />
<!doctype html>
<html lang="en">
<head>
<title>SO question 2240722</title>
</head>
<body>
<select>
<c:forEach items="${stateBean.values}" var="state">
<option value="${state}">${state}</option>
</c:forEach>
</select>
</body>
</html>
You will have to create a list somewhere on your backing code and pass it as a model parameter. Preferably in an ServletContextListener
(as advised by BalusC) and put it in the ServletContext
(i.e. application scope):
servletContext.setAttribute("statesList", YourEnum.values());
Note that you can also use a scriptlet (I don't think it's too harmful in such a simple case):
<c:forEach var="state" items="<%= USState.values() %>" >
(USState
should be either fully qualified or imported using <%@ page import = "..." %>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With