Eri*_*son 8 java enums jsp jstl el
我有一个枚举类USState.我想在JSP中遍历状态.
是否可以在USState不首先将此类列表设置为属性的情况下访问s列表?看起来像enum一样静态的东西应该总是可用的,但我无法弄清楚如何去做.
这就是我要找的东西:(工作除外)
<c:forEach var="state" items="${USState.values}" >
<option value="${state}">${state}</option>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
您必须在支持代码的某处创建一个列表,并将其作为模型参数传递.最好是ServletContextListener(如BalusC所建议的)并将其放入ServletContext(即应用范围):
servletContext.setAttribute("statesList", YourEnum.values());
Run Code Online (Sandbox Code Playgroud)
您还可以考虑将其包装在Javabean中,如下所示:
package com.stackoverflow.q2240722;
public class StateBean {
public State[] getValues() {
return State.values();
}
}
Run Code Online (Sandbox Code Playgroud)
这样它可以通过<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>
Run Code Online (Sandbox Code Playgroud)
请注意,您也可以使用scriptlet(在这种简单的情况下,我认为它不太有害):
<c:forEach var="state" items="<%= USState.values() %>" >
Run Code Online (Sandbox Code Playgroud)
(USState应该是完全合格的或使用导入的<%@ page import = "..." %>
| 归档时间: |
|
| 查看次数: |
17154 次 |
| 最近记录: |