0

私のページには、コンポーネントが managedBean から値を取得するフォームがあります。次に、ページに次のボタンがあります。

<p:commandButton value="Search" action="#{mbProduct.selectBrand}" ajax="false" immediate="true" />

このボタンをクリックすると、ユーザーがブランドページにリダイレクトされるため、ユーザーは製品のブランドを選択して製品ページに戻ることができます (ユーザーがボタンをクリックしたときとまったく同じ方法)。問題は、フォーム内のinputTextsの値を変更し、すぐに[検索]ボタンをクリックすると、ユーザーがクリックする前にそれを行うためのajaxリクエストがないため、inputTextの値がmanagedBeanに送信されないことです検索ボタン。ボタンがアクションを呼び出す前に、この動作を回避してフィールド値を設定するにはどうすればよいですか?

---編集--- アレクサンドルが示唆したように、ボタンから immediate="true" を取り出しましたが、検証エラーが発生しました。このフィールドにある特定の検証:

<p:selectOneMenu value="#{myMb.selectedItem}">
<f:selectItems value="#{myMb.itemsList}" />
</p:selectOneMenu>

itemsList は myMb コンストラクターで遅延初期化され、ユーザーが selectedValue を変更しない場合にのみ検証エラーが発生します。この値を変更すると、検証エラーは発生しません。

4

1 に答える 1

0

immediate="true"アクションの前に入力が適用されるように、を削除する必要があります。

詳細: http://balusc.blogspot.ca/2006/09/debug-jsf-lifecycle.html#WhenShouldIUseTheImmediateAttribute

于 2013-05-11T12:01:55.147 に答える