2012-05-08 126 views
0

如果我正確理解JSF生命週期,它會在應用請求階段註冊驗證程序。 這是否意味着我無法將addValidator調用到在Process Request Events階段被調用的decode()方法內部的Component對象句柄中?如果是這樣,是否還有其他方式根據組件的屬性值動態添加自定義驗證器?JSF 1.2動態添加自定義驗證程序

感謝

+0

你可以嘗試創建一個自定義的驗證裝飾你的屬性need.Based的驗證,您可以選擇驗證並運行它在組件上。 –

回答

0

我希望應該工作類似於..

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); 
} } 
+0

只是好奇你如何填充變量requiredValidatorType? – phewataal

+0

請參閱鏈接(http://www.ibm.com/developerworks/java/library/j-jsf3/)或(http://docs.oracle.com/javaee/5/tutorial/doc/bnauw.html ) –

+0

我會將它標記爲你幫助我的驗證抽象的答案。我更加好奇我們如何初始化組件中的ValidatorWrapper。我試圖做一些像myComponent.addValidator(ValidatorWrapper); – phewataal