2

<h:inputXxx validator>属性と<f:validator>タグの使用の違いは何ですか?

<h:inputText ... validator="someValidator">
<h:inputText ...>
    <f:validator validatorId="someValidator" />               

いつどちらを使用する必要がありますか?

4

2 に答える 2

3

このvalidator属性を使用すると、次のようにバリデーターIDだけでなく、スタンドアロンのマネージドBeanメソッドを参照できます。

<h:inputSomething validator="#{bean.validate}" />

validate(FacesContext context, UIComponent component, Object value)実装を必要とせずに、バッキングBeanクラスのメソッドを使用しValidatorます。

を使用<f:validator>すると、1つのviavalidator属性だけでなく、複数のバリデーターを入力に登録できます。

どちらを使用するかは、具体的な機能要件によって異なります。クリーンなコードになるように、必要なコードの量が最も少ないものを選択するだけです。

于 2013-03-15T12:46:12.387 に答える
0

ここにSpringConfigがあると仮定しましょう。

次に、最初のケースでは、「fooValidator」が1つ<beanId>になり、それぞれのクラス(つまり、バリデータークラス)が呼び出され、検証が行われます。

2番目のケースでは、それはのようなものでなければなりません"#{someBean.validationMethod}"。この場合、その検証メソッドが呼び出されます。

最初のものは良いアプローチです。その場合、バリデータークラスはJSFのデフォルトのバリデーターインターフェイスを拡張し、validate()メソッドを実装するためです。

検証プロセスをカスタマイズする場合は、2番目が適切です。

最初はページのレンダリング時に呼び出されますが、2番目についてはよくわかりません。しかし、それはレンダリング時にも呼ばれると思います。

于 2013-03-15T12:47:13.477 に答える