で日付が選択された後に Bean を呼び出したいp:calendar
。私のセットアップでは、@Named @ViewScoped
Bean があり、クラスObWithDate
は@Entity
日付フィールドvalidFromです。
<h:form id="fUser">
<p:dataTable id="dt" var="cum" value="#{myBean.listObWithDates}">
<p:column>
<p:calendar id="cValidFrom" value="#{cum.validFrom}">
<p:ajax event="dateSelect" listener="#{myBean.update(cum)}"
update=":fUser:dt"/>
</p:calendar>
</p:column>
</p:dataTable>
</h:form>
update(ObWithDate myO)
良い点は、日付を選択するたびに正しいオブジェクトでBean メソッドが呼び出されることです。悪いことに、それmyO.validFrom
は正しい値を持っていません。常に一歩遅れています:
- 2012-01-01 で初期化されたフィールド
- GUI を 2012-01-05 に変更、Bean メソッドのデバッグを 2012-01-01 に変更
- GUI を 2012-01-15 に変更、Bean メソッドのデバッグを 2012-01-05 に変更
この問題は私を夢中にさせます.正しく更新されていない値に関するいくつかの問題とp:calendar
. それらのほとんどはselectListener="#{calendarBean.handleDateSelect}"
、 handleDateSelect(DateSelectEvent event)
メソッドで属性を使用することを提案しています。しかし、変数の現在のインスタンスを渡したいので、メソッドを呼び出したいと思います。
- Firebug は、更新された正しい値が POST 要求で送信されることを確認します
- Primefaces 3.2 と JBoss-7.1.1-Final を使用しています
- なくても問題
p:dataTable
だけを使用しp:calendar
ても同じです。 - method-Objectおよび の対応するエントリで、デバッグ出力の誤った値が確認される場合があります。
update(ObWithDate myO)
myBean.listObWithDates
<p:ajax immediate="true" .../>
はこの問題を解決しません。
アップデートMattHandy は私を大いに助けてくれました。p:dataTable: How to get the row of p:ajax dateSelect eventのフォローアップJSF p:calendar で定式化されています。