1

selectInputDate に問題があります: selectInputDate にバインドしているバッキング Bean があります... メニューが変更されたときに、selectInputDate がバインドされているのと同じプロパティに日付を設定するメニューがあります。

何らかの理由で、日付は正しく変更されますが、selectInputDate はセットを呼び出し、値を古い値で上書きします...

selectInputDate がセッターを呼び出す理由は何ですか?

<ice:selectInputDate popupDateFormat="dd-MMM-yyyy" renderAsPopup="true" value="#{dateContoller.date}"/>

<ice:selectOneMenu value="#{dateContoller.dateRange}" valueChangeListener="#{dateRangeDateContoller.dateRangeChanged}"  >
....
</ice:selectOneMenu> 

(dateRangeChanged は現在の日付を今に設定します)

4

1 に答える 1

2

valueChangeListener、新しく送信された値が元の値と異なる場合は常に、何らかのコード ロジックを実行することを意図しています。しかし、実際には値の変更には関心がないようです。実際には、送信された値のリセットに関心があります。

を取り除きvalueChangeListener、Bean のアクション メソッドで処理を行うだけです。

何らかの理由でそれができない場合は、 a を使用することが適切な解決策であると考えた問題について詳しく説明する必要がありますvalueChangeListener。を呼び出して JSF が(および!) フェーズを実行しないようにしたり、 を使用してフェーズ中にそれ自体を再実行させたりするvalueChangeListenerなど、 とにかくを保持するための回避策がある場合があります。FacesContext#renderResponse()update model valuesinvoke actionValueChangeEvent#queue()invoke action

JSF ライフサイクルと、一方と他方が呼び出される/呼び出されるタイミング/理由/方法についてもう少し学ぶには、この実用的な記事が役立つ場合があります。

于 2010-03-18T18:14:41.387 に答える