ページ上にクロスバリデーションが必要なフィールドがあります。しかし、私は、このフィールドの<h:message>
にこのバリデーションのエラーが表示されることを望んでいません。JSFでフィールドを検証して例外をスローしますが、別のフィールドにエラーメッセージを添付しますか?
いずれかのフィールドにバリデーターを追加し、バリデーターが例外をスローすると、このフィールドのエラーは<h:message>
に表示されます。一方、私はページの送信を抑止したい場合、例外をスローする必要があります。いくつかのエラーメッセージを表示するだけでは不十分です。
私はフォームにいくつかの隠しフィールドを作成し、そこでバリデーターを添付しました。このバリデーターは、検証したいフィールドのUIComponentsにアクセスできるので、検証することができます。バリデータが例外をスローすると、エラーが<h:message>
に表示されます。隠しフィールドはどこにでも置くことができます。
フィールドの後ろに非表示フィールドを置くと、すべて動作します。 (私が前に置いた場合、フィールドのUIComponentも更新される前に、隠しフィールドの検証が行われます)。
問題はそれが厄介なハックです:それを行うにはいくつかのより良い方法はありますか?
他のフィールドを検証するためにのみ非表示フィールドが必要なようです。 「getSubmittedValue()」ヒントありがとう! – amorfis
ようこそ。 – BalusC