2017-03-31 24 views
0

私のp:calendarは、カレンダーポップアップで日付をクリックするだけでなく、テキスト入力フィールドで日付を直接編集することで両方を動作させます。ajax "valueChange"イベントでPrimeface Calendarが正しく更新されない

これは正常に動作します:

 <p:calendar value="#{myBackingBean.date}"> 
      <p:ajax event="valueChange" listener="#{myBackingBean.updateDate()}" /> 
      <p:ajax event="dateSelect" listener="#{myBackingBean.selectDate()}" /> 
     </p:calendar> 

しかし、できるだけ早く私は(下記参照)の日付は、キーボードで編集されたときに、新しい日付はもはや(「とvalueChange」のイベントのために設定されているコンバータを追加します

 <p:calendar value="#{myBackingBean.date}"> 
      <f:converter converterId="myLocalDateConverter"/> 
      <p:ajax event="valueChange" listener="#{myBackingBean.updateDate()}" /> 
      <p:ajax event="dateSelect" listener="#{myBackingBean.selectDate()}" /> 
     </p:calendar> 

どのように私ができる:新しい日付が正しく変換されていますが、バッキングBeanに設定されている日付が古い値ではなく、私はテキストフィールドに編集した新しいものであっても、テキストフィールド)、これを一緒に働かせる?

+1

primefaceでは、calendar属性にconverter属性があります。コンバータIDを渡すには、この属性を使用します。 –

答えて

0

問題の原因がわかりました。コンバーターは、正しく変換できなかったテキストを入力フィールドから受信していました。これは標準のJSFライフサイクルの中断につながり、新しい値の代わりに古い値が設定されているようです。適切にフォーマットされた入力では、すべてが期待通りに機能します。

1

これを参照してください。 https://www.javacodegeeks.com/2015/06/utilizing-the-java-8-date-time-api-with-jsf-and-java-ee-7.html

カレンダーのコンバータ属性を使用してカスタムコンバータを実装しています。この例は、特にJava 8 Date API用です。それに応じてコードを書くことができます。

+0

良いアイデアのように聞こえましたが、 'converter'属性または' '要素を使用すると、悲しいことにその効果は同じです。 – Chris

関連する問題