编写ADF 验证

来源:互联网 发布:mac版的优酷能缓存吗 编辑:程序博客网 时间:2024/06/06 16:35

一 ADF验证架构

ADF总共有三个环节的验证,分别是View层,Model层和业务层.不同的层都提供了一些内置的验证提供给开发人员。如图我们可以看出各自的关系及次序:

上图我们看到,对于View层又包含二层,分别是Client和ADF Faces层,Client运行的客户端,可以用javascript实现,而ADF Faces运行在服务器端,必须用java类来实现。

二 ADF Face层验证

现在写一个邮件的验证类步骤:

1 编写java 类实现Validator接口:

public class EmailValidateBean implements Validator {        public EmailValidateBean() {        super();    }    public void validate(FacesContext facesContext, UIComponent uIComponent,                         Object object) throws ValidatorException {        }}
2 编写验证代码:

public class EmailValidateBean implements Validator {    String str="^(.+)@(.+)$";  //表达式    Pattern enailVal= Pattern.compile(str);        public EmailValidateBean() {        super();    }    public void validate(FacesContext facesContext, UIComponent uIComponent,                         Object object) throws ValidatorException {        Matcher matcher=enailVal.matcher(object.toString());                if(!matcher.matches()){           // JSFUtils.addFacesErrorMessage("电子邮件格式出错!");            FacesMessage f=new FacesMessage("电子邮件格式出错!");            f.setSeverity(FacesMessage.SEVERITY_ERROR);            throw new ValidatorException(f);        }    }}

3 注册.在face-config.xml添加validateor,代码如下:

<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee">  <application>    <default-render-kit-id>oracle.adf.rich</default-render-kit-id>  </application>    <!---注册电子邮件-->  <validator>    <validator-id>emailVal</validator-id>    <validator-class>hr.EmailValidateBean</validator-class>  </validator>  <!----></faces-config>

4 在组件中使用定自义验证:

          <af:inputText value="#{bindings.Email.inputValue}"                        label="#{bindings.Email.hints.label}"                        required="#{bindings.Email.hints.mandatory}"                        columns="#{bindings.Email.hints.displayWidth}"                        maximumLength="#{bindings.Email.hints.precision}"                        shortDesc="#{bindings.Email.hints.tooltip}" id="it4">                        <!--使用validatorId指定在face-config.xml中的validator-id-->                        <f:validator validatorId="emailVal"/>          </af:inputText>

三 Model层验证

在这层中我们开发人员用的是最多的,特别是在于绑定VO的时候,如图:

          <af:inputText value="#{bindings.FirstName.inputValue}"                        label="#{bindings.FirstName.hints.label}"                        required="#{bindings.FirstName.hints.mandatory}"                        columns="#{bindings.FirstName.hints.displayWidth}"                        maximumLength="#{bindings.FirstName.hints.precision}"                        shortDesc="#{bindings.FirstName.hints.tooltip}"                        id="it2"><strong><span style="color:#ff6666;">            <f:validator binding="#{bindings.FirstName.validator}"/></span></strong>          </af:inputText>
上面的标红色就是model层的验证。

四 业务层验证

1 在业务层,ADF提供了三种类型的验证,Attribute Level,Entity Level和Transction Level.在提交的时候,也是按前面的顺序执行。需要说明的是Transction验证默认是执行的,但我们可以跳过此验证.具体做法是在page的定义文件中加入跳过DataControl验证,如下图:

<pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"                version="11.1.1.61.92" id="popupPageDef" Package="pages"                 <span style="color:#ff0000;"><strong>SkipValidation="skipDataControls"</strong></span>>
上面标红的代表跳过Transction Level的验证。

2 使用domain进行业务层验证(具体方法略)

0 0
原创粉丝点击