struts1.2的Validator验证框架使用
2012-07-24 14:55
465 查看
Validator采用基于两个xml文件的方式来配置验证规则,分别为validation.xml,validator-rules.xml。 在struts应用中,需放到web-inf目录下。 1.validator-rules.xml 这个文件包含了一组验证规则,对所有struts应用都适用。一般情况不用修改这个文件,除非要修改或扩展默认规则。如果要给应放到另一个xml文件中,而不是直接添加到validator-rules.xml文件中,这样当Validator升级时,不用修改validator-rules.xml文件。
2.validator.xml文件
这个文件是针对于具体struts应用的,他可以为应用中的ActionForm配置验证规则。而不用编码实现验证。
3. struts-config.xml中配置<plug-in>
<plug-in className=”org.apache.struts.validator.ValidatorPlugIn”> <set-property value=”/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml” property=”pathnames” /> </plug-in>
4.Validator和ActionForm
Validator框架不能直接org.apache.struts.action.ActionForm。应采用ActionForm的两个子类
ValidatorActionForm和ValidatorForm
DynaValidatorActionFrom继续自DynaValidatorForm
支持动态在ActionFrom中使用Validator框架
ValidatorFormActionForm继承ValidatorForm
支持在标准ActionForm中使用Validator框架。
DynaValidtaorForom和ValidatorForm类都实现了validator()方法,如果验证失败,
就会返回包含错误消息的ActionMessage对象,并把该对象添加到ActionErrors集合对象中,
由validator方法最后返回ActionErrors对象。
ValidatorForm有一个子类ValidatorActionForm
ValidatorForm
Strust配置文件的元素的name属——>validator.xml文件 元素的name属性
ValidatorActionForm
Strust配置文件的元素的path属——>validator.xml文件 元素的name属性
Validator框架提供这两个类目的在于可以更加精确的控制执行验证的条件。
而DynaValidatorForm和DynaValidatorActionForm的区别和
ValidatorFrom和ValidatorActionForm的区别一样
(Dyna)ValidatorFOrm和(Dyna)ValidatorActionForm的区别,
它们的类名差了Action字样,区别就是Validator的验证时针对表单还是Action,
不含有Action字样的类是完全针对表单进行验证,即使这个表单和多个Action关联,
含有Action字样的类针对Action关联的表单进行验证。
配置Validator的时候需要配置form标签,这个标签有个name属性,如果是针对表单验证,
这里就写表单的name属性,如果是针对Action验证,这就写Action的path属性。
5.在validator框架中使用JavaScript
默认情况下,validator框架在服务器端执行表单验证。也可以在客户端验证。
如果在客户端验证,需要使用struts的标签,他能在jsp页面中生成用于客户端验证的JavaScript的脚本。
1) 在validator-rules.xml文件的元素中配置元素默认struts框架的validator-rules.xml文件已经包含了
javascript子元素。也可以将这些javascript集中放到一个validator.js的文件中,在页面中引入代码
<script language=”Javascript1.1″ src=”js/validator.js”>< /script>
2) 在Jsp页面中包含< html:javascript>
< html:javascript formName=”loginForm”> 这个标签的form的name属性制定需要验证的表单名字,
他能够访问为表单配置的验证规则的javascript元素,把包含的脚本写到jsp页面中,
生成validateLoginForm的函数,负责执行验证逻辑
或
<html:javascript dynamicJavascript=”true” staticJavascript=”true” formName=”userForm”/>
3) 对需要验证的表单定义onsubmit事件
4)代码
<html:form method=”post” action=”regist.do” onsubmit=”return validateUserForm(this)”>
或
< html:form action=”manageContract.do” onsubmit=”return validateContractForm(this);”>
5) 用户在表单上提交后,就会调用
标签生成的js脚本validateLoginForm函数,执行验证。如果验证失败,就会弹出对话框提示,
不会提交的服务器端。
6. 在Jsp页面添加
<%@ taglib uri=”/WEB-INF/struts-html.tld” prefix=”html”%> <%@ taglib uri=”/WEB-INF/struts-bean.tld” prefix=”bean”%>
7. 报错信息
<html:errors/>
小结
使用步骤
1) 创建扩展ValidatorForm或ValidatorActionForm类的ActionForm,如果使用动态ActionForm,
则不用扩展DynaValidatorForm或DynaValidatorActionForm类的子类,可以直接进行第二步
2) 在struts文件中配置form和action元素
3) 把validator框架使用的文本信息添加到应用的Resource Bundle中
4) 代码
< message-resources parameter=”com.web.ApplicationResources” />
5) 在validatorxml文件中为表单配置验证规则
6) 在struts配置文件中配置validatorPlugIn插件
代码
<plug-in className=”org.apache.struts.validator.ValidatorPlugIn”> <set-property value=”/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml” property=”pathnames”/> </plug-in>
***********************************************************************
例如一个验证登陆form的例子,要求用户名必须填写,秘密要求必填、最大、最小长度及其内容的要求。
<form-validation> <global> <!– 密码由数字、26个英文字母或者下划线组成的字符串 –> <constant> <constant-name>pwd</constant-name> <onstant-value>^\w+$</onstant-value> </constant> </global> <formset> <!– 这里的name是取决于DynaValidatorForm和DynaValidatorActionForm 如果选DynaValidatorForm,这里的name就是action的name(即form-bean的name) 如果选DynaValidatorActionForm,这里的name就是action的path –> <form name=”loginForm”> <!– 这里的用户名使用邮箱,验证时使用正则表达式进行验证, key跟资源文件中的键对应 如果多了 resource=”false” 这句话,那么它不会再从资源文件中去取, 而是直接用 key 值来表示。 如<arg1 name=”maxlength” resource=”false” key=”${var:maxlength}”/>中的 arg1要与错误信息中所对应的该验证器的参数一至 (errors.maxlength={0} can not be greater than {1} characters.) 如果(errors.maxlength={0} can not be greater than {2} characters.)的话, 那么就必须将2改为1 –> <field property=”user.userId” depends=”required”> <arg0 key=”user.userId” /> </field> <field property=”user.userPwd” depends=”required,minlength,maxlength,mask”> <!– msg name=”mask” key=”errors.invalid” /–> <arg0 key=”user.userPwd” /> <arg1 name=”minlength” key=”${var:minlength}” resource=”false” /> <arg2 name=”maxlength” key=”${var:maxlength}” resource=”false” /> <var> <var-name>mask</var-name> <var-value>^\w+$</var-value> </var> <var> <var-name>minlength</var-name> <var-value>6</var-value> </var> <var> <var-name>maxlength</var-name> <var-value>20</var-value> </var> </field> </form> </formset> </form-validation>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sukyle/archive/2009/04/08/4056119.aspx
相关文章推荐
- struts1.2的Validator验证框架使用
- 使用Struts1.2 Validator验证框架的简单例子
- Validator验证框架(在Struts中使用注意)
- 使用Struts提供的Validator框架进行验证(lp)
- 在Struts中使用Validator验证框架详解
- 详解Struts中Validator验证框架的使用
- 在Struts中使用Validator框架按Action分类对数据进行验证
- 在Struts中使用Validator验证框架详解
- Struts 2中验证框架内field-validator的required与requiredstring类型的区别
- Struts学习---------Validator框架验证
- Struts之validator框架验证
- 在Struts中使用Validator框架_另
- 利用Struts的Validator验证框架实现客户端和服务器端双验证
- Struts1.2的框架验证
- struts validator验证框架
- Struts:validator验证框架详解(二)
- 初识Struts(九)-------动态验证框架validator
- 在struts中使用Validator框架
- Struts2使用validator验证框架的问题
- struts的数据验证[2 Struts Validator验证框架1]