<h:inputXxx validator>
属性と<f:validator>
タグの使用の違いは何ですか?
<h:inputText ... validator="someValidator">
<h:inputText ...>
<f:validator validatorId="someValidator" />
いつどちらを使用する必要がありますか?
<h:inputXxx validator>
属性と<f:validator>
タグの使用の違いは何ですか?
<h:inputText ... validator="someValidator">
<h:inputText ...>
<f:validator validatorId="someValidator" />
いつどちらを使用する必要がありますか?
このvalidator
属性を使用すると、次のようにバリデーターIDだけでなく、スタンドアロンのマネージドBeanメソッドを参照できます。
<h:inputSomething validator="#{bean.validate}" />
validate(FacesContext context, UIComponent component, Object value)
実装を必要とせずに、バッキングBeanクラスのメソッドを使用しValidator
ます。
を使用<f:validator>
すると、1つのviavalidator
属性だけでなく、複数のバリデーターを入力に登録できます。
どちらを使用するかは、具体的な機能要件によって異なります。クリーンなコードになるように、必要なコードの量が最も少ないものを選択するだけです。
ここにSpringConfigがあると仮定しましょう。
次に、最初のケースでは、「fooValidator」が1つ<beanId>
になり、それぞれのクラス(つまり、バリデータークラス)が呼び出され、検証が行われます。
2番目のケースでは、それはのようなものでなければなりません"#{someBean.validationMethod}"
。この場合、その検証メソッドが呼び出されます。
最初のものは良いアプローチです。その場合、バリデータークラスはJSFのデフォルトのバリデーターインターフェイスを拡張し、validate()メソッドを実装するためです。
検証プロセスをカスタマイズする場合は、2番目が適切です。
最初はページのレンダリング時に呼び出されますが、2番目についてはよくわかりません。しかし、それはレンダリング時にも呼ばれると思います。