JSFのライフサイクルを正しく理解していれば、リクエストの適用フェーズでバリデーターが登録されます。これは、プロセス要求イベントフェーズ中に呼び出されるdecode()メソッド内にあるComponentオブジェクトハンドルにaddValidatorを呼び出せないことを意味しますか?もしそうなら、コンポーネントの属性値に基づいてカスタムバリデーターを動的に追加する他の方法はありますか?
ありがとう
JSFのライフサイクルを正しく理解していれば、リクエストの適用フェーズでバリデーターが登録されます。これは、プロセス要求イベントフェーズ中に呼び出されるdecode()メソッド内にあるComponentオブジェクトハンドルにaddValidatorを呼び出せないことを意味しますか?もしそうなら、コンポーネントの属性値に基づいてカスタムバリデーターを動的に追加する他の方法はありますか?
ありがとう
私がうまくいくことを望んでいるのは..に似ています。
public class ValidatorWrapper implements Validator {
private DoubleRangeValidator dbRangeValidator;
private LongRangeValidator lRangeValidator;
private String requiredValidatorType;/*An attribute to choose the type of validator*/
public ValidatorWrapper(){
dbRangeValidator = new DoubleRangeValidator(10.01, 20.99);lRangeValidator = new LongRangeValidator(10, 20);
}
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
if("LONG".equalsIgnoreCase(requiredValidatorType))
lRangeValidator.validate(context, component, value);
else if("DBL".equalsIgnoreCase(requiredValidatorType))
dbRangeValidator.validate(context, component, value);
} }