2012-04-24 2 views
2

平日選択メニューを作成したい。平日は1970年の最初の平日に初期化されます。値とラベルに異なるパターンを使用した日付のselectOneMenu

コンバータは値を日付に変換します。しかし、私は、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関数を使用しています。

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

+0

この奇妙なアプローチの理由は、あなたが曜日の名前をローカライズしたいということですね。 – BalusC

+0

はい、「05/01/1970」は平日の回収のために後でデータベースに保存する日付です – djmj

+0

大丈夫です。次に、いくつかの(既存の!)定数を使用して問題が解決されました。 – BalusC

答えて

2

変換器は実際にはオプションラベルには適用されません。これはオプション値にのみ適用されます。 EL機能でうまくいくはずです。あなたはList<Date>として使用可能な項目と選択項目としてDateをしたと仮定すると、これは実行する必要があります。

この

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ようformatDate()外観は道exactlyこの機能によって持って

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

+0

ありがとう、ええ、その機能は私の平日の機能よりはるかに有用です。 – djmj

+0

ようこそ。 – BalusC

+0

#{bean.weekdays}を置き換えるためにel関数を使用することに不利な点はありますか? – djmj

関連する問題