Enum型をSelectコンポーネントの値に使う時のOptionのラベルをカスタマイズする

次のEnum型を使います。Screencast#4に出てくるSelectコンポーネントと同じものです。

public enum Sex {
    MALE, FEMALE, REFUSES_TO_SAY
}

また、次の Start.html, Start.java をそれぞれ用意します。

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
    <head>
        <title>myapp Start Page</title>
    </head>
    <body>

        <form t:type="form" clientValidation="false">
            <t:errors/>
            <label t:type="label" for="sex"/>
            <select t:type="select" t:id="sex" value="sex"/>
            <input t:type="submit"/>
        </form>

    </body>
</html>
public class Start {

    @Persist
    private Sex _sex = Sex.REFUSES_TO_SAY;

    public Sex getSex() {
        return _sex;
    }

    public void setSex(Sex sex) {
        _sex = sex;
    }

}

実行するとこのようなセレクトボックスが表示されます。


ここで、Start_ja.properties に次の内容を追加します。

sex-label=性別
sex.male=男性
sex.female=女性
sex.refuses_to_say=無回答

すると、このように表示されます。

つまり、メッセージカタログに「Enum型の名前.Enum定数名=Optionのラベル」という書式で記述しておけば良いのです。便利ですね。



貝印 KAI ターナー SELECT100 DH3012

貝印 KAI ターナー SELECT100 DH3012