2012-05-08 49 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