(下述均使用Oracle XE自带的HR示例中Employees表作为示例表)
- 使用EO层次的Validator
首先,ADF框架中所有的Validator默认都使用EO级别的Validator。EO层次可以设置Entity级别的Validator或Attributes级别的Validator。
选择相应的级别,点击界面上的加号即可创建Validator,ADF提供了灵活的Validator以供选择
选择需要的Validator Rule Type,写入相应的验证规则后,即可在Failure Handling中写入验证失败的抛出消息。在此处设置的消息将写入资源文件中。
最后,当VO被拖入页面时,对应控件将自动包含一个<f:validator>子控件,其绑定为EO层次的Validator。 - 在ManageBean中实现Validator
ADF本身提供的Validator相对比较灵活,但当EO的重用程度比较高时(如不同的VO使用相同的EO,需要设置不同验证规则/不同弹出消息,甚至不同页面使用相同VO,需要不同验证规则),EO级别的Validator显然不能满足要求。则可以通过重写Validator并添加至页面控件的绑定以实现。
<f:validator>绑定的对象为一个属性,所以首先应为该Validator创建一个实现Validator接口的Class,最简单的如下(可以写入更复杂的验证逻辑)public class testValidator implements Validator {
public void validate(FacesContext context, UIComponent component,
Object obj) throws ValidatorException {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, "TEST", "TEST MESG"));
}
}
在MB中创建一个该属性的实例,并构造相应的get/set方法如下private testValidator test = new testValidator();
public void setTest(testValidator test){
this.test = test;
}
public testValidator getTest(){
return this.test;
}
最后,通过EL表达式将该属性绑定至<f:validator><f:validator bindings="#{backing_ExpsProYbudgetUpdate.test}">
0 评论:
发表评论