8

私は列挙型クラスを持っていUSStateます。JSP で状態を繰り返し処理したいと考えています。

USState最初にそのようなリストを属性として設定せずに のリストにアクセスすることは可能ですか? 列挙型のような静的なものは常に利用可能であるように思われますが、その方法がわかりません。

ここに私が探しているものがあります:(働くことを除いて)

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

3 に答える 3

9

バッキング コードのどこかにリストを作成し、それをモデル パラメーターとして渡す必要があります。できれServletContextListenerば(BalusCのアドバイスに従って)、ServletContext(つまりアプリケーションスコープ)に入れます:

servletContext.setAttribute("statesList", YourEnum.values());
于 2010-02-10T22:21:27.087 に答える
9

次のように 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>
于 2010-02-10T22:54:02.010 に答える
7

スクリプトレットを使用することもできることに注意してください(このような単純なケースでは、それほど有害ではないと思います)。

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

USState完全に修飾されているか、を使用してインポートする必要があります<%@ page import = "..." %>

于 2010-02-10T22:40:42.137 に答える