1

Facelets ページに year フィールドを表示する必要があります。

<h:outputText value="#{dateTOloginDate.get(Calendar.YEAR)}"/>

これは、年の値ではなく、常に 1 を返します。どうすれば達成できますか?

4

1 に答える 1

2

Calendar.YEAR定数フィールド値です。定数フィールド値は、デフォルトでは EL スコープではまったく使用できません。ただし、ハードコーディングされた定数値は機能します。

よりクリーンな方法でこれを実現するには、いくつかの方法があります。

  1. <f:convertDateTime>代わりに使用してください。java.util.Dateでインスタンスを取得するだけで済みますCalendar#getTime()

    <h:outputText value="#{dateTOloginDate.time}">
        <f:convertDateTime pattern="yyyy" />
    </h:outputText>
    
  2. OmniFaces を使用します<o:importConstants>。特定のタイプの定数フィールド値を EL スコープにインポートできます。このようにして、意図した構文を正確に使用できるようになります。

    <o:importConstants type="java.util.Calendar" />
    ...
    <h:outputText value="#{dateTOloginDate.get(Calendar.YEAR)}" />
    

    ただ、これは IMO の極端な使用例です。私は個人的にその<f:convertDateTime>方法を好むでしょう。java.util.Date不器用な の代わりに使用するだけでも理想的ですjava.util.Calendarjava.util.Calendarモデル値型として持つことがどのように有益かわかりません。

于 2012-08-16T21:59:45.710 に答える