2

Spring で Web アプリケーションを構築していて、列挙型の値を *.jsp のラベルとして表示したい

私の列挙型:

public enum Type {BODY_WEIGHT, WEIGHTS};

現在、次を使用してフォームで表示しています:

            <form:select path="type" items="${typeLabels}" itemValue="value" itemLabel="label">
               <form:options/>
            </form:select>

「typelabels」は、列挙値をラベルにマッピングする単純なオブジェクトのリストです。

    List<ExerciseType> typeLabels = new ArrayList<ExerciseType>();
    typeLabels.add(new ExerciseType(Type.BODY_WEIGHT, "Body weight"));
    typeLabels.add(new ExerciseType(Type.WEIGHTS, "With weights"));

これはうまくいきます。

次に、enum をプロパティとしてオブジェクトのリストを表示します。

          <c:forEach var="exercise" items="${list}" >
            <tr>
              <td>${exercise.title}</td>
              <td>${exercise.description}</td>
              <td>${exercise.type}</td>
            </tr>
          </c:forEach>

明らかに今、「BODY_WEIGHT」や「WEIGHTS」などの値を取得しています。

前の例と同様に、列挙値とそのラベルの間のマッピングのリストを提供する方法はありますか?

後でアプリケーションをローカライズしたいので、BODY_WEIGHT("Body weight") のようなもので列挙型にラベルをハードコーディングしたくありません。

ありがとう!

レオ

4

2 に答える 2

3

列挙型名をキーとして、列挙型ラベルを値として含む、リソース バンドルを列挙型に関連付けます。次に、関連付けられたラベルを表示するキーとして enum 名で<fmt:setBundle/>andを使用します。<fmt:message>

<fmt:setBundle basename="com.foo.bar.resources.Type" var="typeBundle"/>
<fmt:message key="${exercise.type}" bundle="${typeBundle}"/>
于 2012-07-28T22:43:29.220 に答える