1.主要内容
1.validator验证框架步骤
2.validation.xml文件的设置
1.form里:name对应struts-config.xml中一个具体action里的attribute
2.field里:property是ActionForm里的属性名,实际上对应于页面中的文本框,即:要对哪个文本框进行验证
depends表示依赖于哪些验证规则
3.arg里:resource属性,若为true,key的值从属性文件中读出,若为false,则为key 等号后的值
name验证规则的名称,如果arg0没有name属性,key值 对应所有属性文件中的{0}
如果有name属性,key值只 对应此规则的属性文件中的{0}
比如:在validation.xml里同时设置2个arg0
<arg0 key="name" resource="false"/>
<arg0 key="name11" name="required" resource="false"/>
效果:属性文件中所有{0},会赋值为name,而errors.required对应的是name11
比如:
errors.required={0} is required {1} //{0}是name11
errors.minlength={0}'minlength must be greater than {1} //{0}是name
errors.maxlength={0}'maxlength must be less than {2} //{0}是name
4.var参数设置
2.validator验证框架步骤
1.将form.LoginForm继承的类ActionForm改为ValidatorForm,导包 并注释此类中的validate和reset方法
2.创建validation.xml文件(重点,具体参看例子设置)
3.struts-config.xml中添加plug-in节点(直接从WEB-INF下validator-rules.xml中拷贝)
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
4.在ApplicationResources.properties 中添加提示的信息(参看例子设置)
5.在页面上添加<html:errors property="username"/>
3.例子(需要变动的主要是第2步和第4步,即:validation.xml和ApplicationResources.properties)
此例依次验证了用户名: 不为空,最小长度6位,必须是字母,最大长度10,并解释了各个属性的功能
ApplicationResources.properties中的内容
errors.required={0} is required {1}
errors.minlength={0}'minlength must be greater than {1}
errors.maxlength={0}'maxlength must be less than {2}
errors.invalid= {0} {3}
name=username
char=must be a-z or A-Z
validation.xml中的内容
//下面的头 直接从WEB-INF下validator-rules.xml中拷贝
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<formset>
<form name="loginForm">
<field property="username" depends="required,minlength,mask,maxlength">
<arg0 key="name"/>
<arg0 key="name11" name="required" resource="false"/>
<arg1 key="${var:minlength}" name="minlength" resource="false"/>
<arg2 key="${var:maxlength}" name="maxlength" resource="false"/>
<arg3 key="char"/>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
<var><var-name>mask</var-name>
<var-value>^[a-zA-Z]+$</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
4.解释:
<form-validation>总框架,
<formset>对Form里的数据进行配置
<form name="loginForm">loginForm对应于struts-config.xml中一个具体action里的attribute
<field property="username" depends="required,minlength,mask,maxlength">
field:配置一个属性的验证内容
property是ActionForm里的属性名,实际上对应于页面中的文本框,即:要对哪个文本框进行验证
depends 依赖于哪些验证规则,可以是validator-rules.xml里的也可以自定义
<arg0 key="name" name="required" resource="false"/>
1.resource属性,如果为true,key的值从属性文件中读出,若为false,则为key 等号后的值
1.如果resource为true,则会从ApplicationResources.properties中找到name=username
把username 赋给errors.required={0} is required里的"{0}" username is required
2.如果resource=false,则直接把name赋给"{0}" name is required
2. name验证规则的名称,如果arg0没有name属性,key值 对应所有属性文件中的{0}
如果有name属性,key值只 对应此规则的属性文件中的{0}
比如:在validation.xml里同时设置下面2个arg0
<arg0 key="name" resource="false"/>
<arg0 key="name11" name="required" resource="false"/>
效果:属性文件中所有{0},会赋值为name,而errors.required对应的是name11
errors.required={0} is required //{0}是name11
errors.minlength={0}'minlength must be greater than {1} //{0}是name
errors.maxlength={0}'maxlength must be less than {2} //{0}是name
errors.invalid= {0} {3} //{0}是name
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
var参数,为validator-rules.xml里的对应规则配置的(由程序员设置的)
1.并不是所有的都需要参数,
比如:非空验证,不需要程序员指定什么
而用户名最小长度,必须有程序指定
2.需要指定参数的有
minlength maxlength mask(正则表达式)...
3.参数的使用
minlength:用户名最小为3,则可以如下设置
1.真正验证时参数: <var><var-name>minlength</var-name><var-value>3</var-value></var>
2.提示信息时参数:<arg1 key="3" name="minlength" resource="false"/>
mask参数:正则表达式挺方便的
1.真正验证时参数:
<var><var-name>mask</var-name><var-value>^[a-zA-Z]+$</var-value></var>
2.提示信息时参数:<arg1 key="must be a-z or A-Z" name="minlength" resource="false"/>
5.代码 代码下载
项目测试:1.运行代码,点提交
2.输入小于6的字母
3.输入大于6为的数,有字母和数字组成
4.输入大于10的字母
6.参考资料:http://java.chinaitlab.com/base/741350.html
validation.xml配置文件的标签:
<form-validation></form-validation>是总框架
<formset></formset>是对Form里的数据进行配置
<form name="ActionForm对应的名称"></form>对一个ActionForm里的数据进行验证配置
<field property="ActionForm里的属性名" depends="验证规则,可以是Validation-rules里定义好的
也可以是自定义的验证规则">这里配置一个属性的验证内容
<arg0 name="对应的验证规则名称" key="可以直接填入数值,也可填入变量表达式:${var:变量名}" resource="true/false"(代表是否从资源文件中读取信息,否则Key的值以参数的形式返回)>
<var></var>定义一个变量的标签体,可以在里面具体设置变量的名称以及数值
<var-name>对应Key里定义的变量名称</var-name>
<var-value>值</var-value>
<msg name="对应的验证规则名称" key="资源文件中定义的变量名称">这里定义了信息变量后,
会默认定义的信息变量。