以前のプロジェクトでは、フォームを送信せず、モデルの更新が行われなかったため、何かをキャンセルするときにSeam 2のs:buttonまたはs:linkをよく使用していました。
今、私はWELD + Seam 3に切り替えましたが、もうそこに見つかりませんでした-私はただ盲目ですか、それとも他のものを使用する必要がありますか?
Geziefer
以前のプロジェクトでは、フォームを送信せず、モデルの更新が行われなかったため、何かをキャンセルするときにSeam 2のs:buttonまたはs:linkをよく使用していました。
今、私はWELD + Seam 3に切り替えましたが、もうそこに見つかりませんでした-私はただ盲目ですか、それとも他のものを使用する必要がありますか?
Geziefer
immediate
で属性をtrue
に設定することにより、プレーンJSF2.0でそれを行うことができますh:commandButton
。
MyFaces wikiから:
即時属性を使用して、次の効果を実現できます。
現在の画面の入力フィールドに現在あるデータを処理せずに、commandLinkまたはcommandButtonがユーザーを別のページにナビゲートできるようにします。特に、これにより、現在検証エラーが発生している場合でもナビゲーションを実行できます。「キャンセル」ボタンは通常、このカテゴリに分類されます。
画面上の一部のフィールドの検証を無視しながら、commandLinkまたはcommandButtonがバックエンドロジックをトリガーできるようにします。これは、上記のアイテムのより一般的なバージョンです。
1つ以上の入力コンポーネントを検証用に「高優先度」にして、これらのいずれかが無効な場合、同じページ内の「低優先度」の入力コンポーネントに対して検証が実行されないようにします。これにより、表示されるエラーメッセージの数を減らすことができます。
RichFaces 4のcommandButtonを使用し、bypassUpdatesをtrueに設定することで、これを処理する方法を見つけました。
<a4j:commandButton value="Cancel" action="#{myHandler.cancel}"
bypassUpdates="true" render="myTable" />
私はすでにRichFaces4を使用しているので、このソリューションは問題ありませんが、それでも興味があります。標準のJSF 2.0でこれを解決するにはどうすればよいですか?