如果我正確理解JSF生命週期,它會在應用請求階段註冊驗證程序。 這是否意味着我無法將addValidator調用到在Process Request Events階段被調用的decode()方法內部的Component對象句柄中?如果是這樣,是否還有其他方式根據組件的屬性值動態添加自定義驗證器?JSF 1.2動態添加自定義驗證程序
感謝
如果我正確理解JSF生命週期,它會在應用請求階段註冊驗證程序。 這是否意味着我無法將addValidator調用到在Process Request Events階段被調用的decode()方法內部的Component對象句柄中?如果是這樣,是否還有其他方式根據組件的屬性值動態添加自定義驗證器?JSF 1.2動態添加自定義驗證程序
感謝
我希望應該工作類似於..
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);
} }
你可以嘗試創建一個自定義的驗證裝飾你的屬性need.Based的驗證,您可以選擇驗證並運行它在組件上。 –