2

平日のセレクトメニューを作りたい。平日は 1970 年の最初の平日に初期化されます。

コンバーターは値を日付に変換します。しかし、Java日付パターン「EEEE」を使用して、平日の全文を表示したい。

<h:selectOneMenu id="day" label="#{msg.day_u}" required="true" value="#{date}">
    <f:convertDateTime pattern="dd/mm/yyyy"/>
    <f:selectItem itemValue="05/01/1970" itemLabel="display Monday using pattern"/>
    <!-- other weekdays -->
</h:selectOneMenu>

これは機能していません。現在、カスタム EL 関数を使用して、ラベル属性でローカライズされた曜日を取得しています。

日付パターンで使用する方法はありますか?

4

1 に答える 1

2

コンバーターは実際にはオプション ラベルには適用されません。オプション値にのみ適用されます。EL関数で問題なく動作するはずです。List<Date>利用可能なアイテムとDate選択されたアイテムがあると仮定すると、次のようになります。

<f:selectItems value="#{bean.weekdays}" var="day" 
    itemValue="#{day}" itemLabel="#{util:formatDate(day, 'EEEEE')}" />

formatDate()このように見える場所

public static String formatDate(Date date, String pattern) {
    if (date == null) {
        return null;
    }

    if (pattern == null) {
        throw new NullPointerException("pattern");
    }

    Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
    return new SimpleDateFormat(pattern, locale).format(date);
}

ちなみにOmniFacesにはまさにこの機能があります。

于 2012-04-26T03:34:18.477 に答える