1つのフィールドにバリデータを持つフォームがあります。私は2つを持っています h:commandButton
s:Ok and Cancel。間違ったデータを入力して[キャンセル]をクリックすると、検証メッセージが表示されます。[キャンセル]をクリックしたときにバリデータが実行されないようにするにはどうすればよいですか?
Ajaxを使用していない場合、またはまだJSF 1.xを使用していて、cancel()
メソッドでビジネスアクションを呼び出す必要がある場合(つまり、ページをリロードするだけでは不十分)、最善の策_immediate="true"
_をボタンに追加することです。このように、_immediate="true"
_を持たないすべての入力フィールドは処理でスキップされます。
_<h:commandButton value="Cancel" action="#{bean.cancel}" immediate="true" />
_
JSF 2.xでは、_<f:ajax>
_ではなく_@this
_のみをデフォルトで処理する_@form
_によってフォームを送信する方がはるかに優れています。
_<h:commandButton value="Cancel" action="#{bean.cancel}">
<f:ajax />
</h:commandButton>
_
ここで別のページに移動する場合は、cancel()
メソッドの結果に_?faces-redirect=true
_を追加します。
または、実際にビジネスアクションをまったく呼び出す必要がない場合は、_<h:button>
_を使用して、(暗黙の)ナビゲーションケースの結果を直接指定します。
_<h:button value="Cancel" outcome="previouspage" />
_
これは基本的にGETリクエストによってページをリロードします。 _<h:button>
_はJSF 1.xには存在しませんが、プレーンHTML + JSを使用することもできます。