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
冬天出走的猪 阅读(317)
评论(0) 编辑 收藏 所属分类:
struts