随笔 - 4  文章 - 10  trackbacks - 0
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 1.Validator框架以声明的方式为应用程序配置已存在的检验规则,并允许程序员添加更多的检验规则.Validator框架能够被Struts框架很好地支持.也可以被独立出来使用.因此Validator框架和Struts框架是松散偶合.
 
2.Validator框架由Validator检验类,Validator配置文件,资源配置文件和JSP标签库组成..
 (1).Validator检验类
     该类是在进行检验类时所需要的一个java类.每一次检验的发生都会调用该检验类中的方法,该检验类的方法只针对一种检验规则,但是通过配置文件的声明,可以使检验类规则产生合作.组合成更复杂的检验规则.

 (2).Validator配置文件
    Validator-rule.xml是检验规则配置文件,定义了应用程序中可以使用Validators检验规则.换句话就是将所有可用的检验规则声明在Validator-rule.xml中等待被调用.
   Validator.xml是具体检验配置文件,将Validator-rules,xml中的检验和应用结合起来的配置文件.他的名称并不一定是"validator.xml";可以自定义.甚至可以不用该文件而直接在Validator-rules.xml中指定具体检验.但为了降低偶合,还是应该分出该配置文件.
 (3).资源配置文件
   该文件就是报错信息文件,是为了将检验的出错信息显示给客户端而使用的.就Struts框架和Validator框架协同工作来看,可以认为它就是Struts的resource 绑定所指定的资源配置文件.
(4).JSP标签
  JSP用于读取资源配置文件中的报错信息显示出来.Strts框架中许多与资源配置文件相关的标签都实现了这种工能,另外,<html:javascropt>标签可以直接从validator框架中的validaotr-rulse.xml中得到javascrupt的检验结果.

(2)Validator-rule.xml文件
   Validator框架是通过声明的方式,而不是编程的方式来调用检验规则,因此配置文件Validator-rules.xml十分重要,在Validator-rules.xml中讲检验类所实现的检验规则和声明表示衔接起来,提供声明实现
   Validator-rules.xml文件
  Validator框架是通过声明的方式,而不是编程的方式来调用检验规则.因此配置文件Validator-rules.xml十分重要,在Validator-rules.xml中将检验类所实现的检验规则和声明标识衔接起来,提供声明的实现.
   简单的Validator-rules.xml

<!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<!--
-->

<form-validation>

   <global>  //所有检验规则的声明都被定义<global>元素下作为其子元素  
    <validator name="required"//每个validator都代表一个检验规则,name属性是该检验规则的声明标识
            classname="org.apache.struts.validator.FieldChecks"//检验规则的实体类
               method="validateRequired"//检验类中的方法名,指定声明标识将调用该方法来进行检验
         methodParams="java.lang.Object,//检验类所需要的传入参数
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                  msg="errors.required">//msg属性指定了报错信息在资源配置文件中的"键值",通过该"键值"从资源配置文件中找到该条报错信息,并显示出来.
      </validator>
      <validator name="integer"
            classname="org.apache.struts.validator.FieldChecks"
               method="validateInteger"
         methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="errors.integer"
         </validator>
      <validator name="range"
            classname="org.apache.struts.validator.FieldChecks"
               method="validateIntRange"
         methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
              depends="integer"
                  msg="errors.range">
      </validator>
   </global>
</form-validation>
3个<validator>元素的校验规则
*校验值是否不为空或不为null
*校验值是否可以安全转换为integer型
*校验该校验值的范围是否在最大和最小值之间

<validator>元素还有其他属性来帮助实现其他功能
name属性为range的<validator>元素拥有depends属性,并指定属性的内容为"integer"
depends属性的含义是:本<validator>校验规则必须依赖另一个检验规则而实现.换句话说,就是必须先校验depends属性所指定的<validator>检验规则,通过后才会校验自身规则.depends属性的内容应该是另一组<validator>校验规则的声明.
 
(2)2
validator.xml文件
  该文件是将validator-rules.xml中的校验和应用程序结合起来的配置文件,有了validator-rule.xml后,只要通过validator,.xml将它与具体校验逻辑结合,就能完成真正的具体校验
  结合validator.xml的ActionForm
validator框架的ActionForm
package struts.sample.cap5.sample.form;
import org.apache.struts.validator.ValidatorForm;
public class CheckForm extends ValidatorForm{//不能继承普通的ActionForm,必须继承自ValidatorForm或ValidatorActionForm.若是动态ActionForm,则需要继续于DynaValidatorFor或DynaValidatorActionForm
private sring userName;
private int age;
private string email;
private string password;
public String getUserName(){
return userName;
}
public String getUserName(){
return userName;
}
public void setUserName(String userName){
this.userName=userName;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public String getEmail(){
return email;
}
public void setEmail(string email){
this.email=email;
}
public String getPassWord(){
return password;
}
public void setPassword(String password){
this.password=password;
}
}
*ValidatorForm(或DynaValidatorFor)将根据surut-config.xml文件中<action>的name属性,为当前ActionForm调用相应的校验规则,这在validator.xml中可以看到
*ValidatorActionForm(或DynaValidatorActionForm)使用struts-config.xml中<action>的path属性,为当前ActionForm调用相应的检验规则.

posted on 2007-09-28 21:13 冬天出走的猪 阅读(313) 评论(0)  编辑  收藏 所属分类: struts

只有注册用户登录后才能发表评论。


网站导航: