繁体   English   中英

我可以使用EL从JSP访问枚举类的值吗?

[英]Can I access the values of an enum class from a JSP using EL?

我有一个枚举类USState 我想在JSP中遍历状态。

没有先将这样的列表设置为属性,是否可以访问USState列表? 看起来像enum一样静态的东西应该总是可用的,但我无法弄清楚如何去做。

这就是我要找的东西:(工作除外)

<c:forEach var="state" items="${USState.values}" >
    <option value="${state}">${state}</option>
</c:forEach>

您必须在支持代码的某处创建一个列表,并将其作为模型参数传递。 最好在ServletContextListener (由BalusC建议)并将其放在ServletContext (即应用程序范围)中:

servletContext.setAttribute("statesList", YourEnum.values());

您还可以考虑将其包装在Javabean中,如下所示:

package com.stackoverflow.q2240722;

public class StateBean {

    public State[] getValues() {
        return State.values();
    }

}

这样它可以通过<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>

请注意,您也可以使用scriptlet(在这种简单的情况下,我认为它不太有害):

<c:forEach var="state" items="<%= USState.values() %>" >

USState应该是完全限定的或使用<%@ page import = "..." %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM