(Struts)Validator验证框架

本文接 (Struts)动态ActionForm写验证框架!
 
Struts1.1及以上版本在提供了DynaActionForm的同时,配合数据验证的需要,还提供了表单输入自动验证的功能,即使用Validator验证框架。
   在使用Validator验证框架时,需要用到二个基于XML的配置文件进行验证规则的配置,一个是validator-rules.xml,另一个是validation.xml。这两个文件应该部署在相应的WEB应用中的WEB-INF文件夹下。此外validator还应在struts-config.xml中进行配置。
   在Struts-config.xml中配置Validator
   Validator框架是作为一个Struts插件配置到Struts应用中的,即Struts扩展中的PlugIn机制。通过在Struts配置文件中配置Validator插件,Struts应用在启动的时候就能够知道Validator框架正在被使用,加载并初始化Validator框架。
   以下为示例:
None.gif <!--  验证插件  -->    
None.gif  
< plug-in  className ="org.apache.struts.validator.ValidatorPlugIn" >
None.gif    
< set-property  property ="pathnames"   value ="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"   />
None.gif    
< set-property  property ="stopOnFirstError"   value ="false"   />
None.gif 
</ plug-in >
stopOnFirstError属性的作用是指定客户端JS验证时是在遇见第一个时就返回还是全部处理完后将所有错误全部返回。
 validation.xml的配置
 validation.xml文件是Validator框架需要的另一个配置文件。该文件是特定于应用程序的,由开发人员自己来创建。它描述了那些具体应用中的ActionForm所使用的validator-rules.xml文件中的有效性验证规则。通过ActionForm在validation.xml文件中配置所需要的验证规则,开发人员就不必将 验证的逻辑硬编码ctionForm的内部。一个简单的validation.xml文件代码如下:
None.gif <? xml version="1.0" encoding="GBK" ?>
None.gif
<! DOCTYPE form-validation PUBLIC
None.gif          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
None.gif          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"
>
None.gif    
< form-validation >
None.gif        
<!--  global元素允许开发人员配置可以用在其他部分中的constant元素,也就是全局常量
None.gif            formset也可以有contant元素,定义局部常量
-->
None.gif        
< global >
None.gif            
< constant >
None.gif                
< constant-name > zip </ constant-name >
None.gif                
< constant-value > ^[a-zA-Z]*$ </ constant-value >
None.gif            
</ constant >
None.gif        
</ global >
None.gif        
None.gif        
< formset >
None.gif            
<!--  struts-config formBean中的name属性  -->
None.gif            
< form  name ="dynaFormForm" >
None.gif                
<!--      视图组件中要验证的属性    验证规则 在validator-rules.xml中定义 -->
None.gif                
< field  property ="userName"   depends ="required,minlength,maxlength" >     
None.gif                            
< arg  key ="lable.userName"  position ="0" /> <!--  在资源文件中定义  -->
None.gif                            
<!--  在本文件中设定最小值             false表明可在本文件中直接定义值 -->
None.gif                            
< arg  key ="${var:minlength}"  resource ="false"  position ="1" />
None.gif                            
< var >      <!--  在arg中访问 var的形式 ${var:minlength} -->
None.gif                                
< var-name > minlength </ var-name >
None.gif                                
< var-value > 3 </ var-value >
None.gif                                
<!--  var元素用来向验证规则传递参数  -->
None.gif                            
</ var >
None.gif                            
<!--  在资源文件中设定最大值  -->                 
None.gif                            
< arg  key ="lable.userName.maxlength"  resource ="true"  position ="2" />                             
None.gif                
</ field >
None.gif
None.gif                
< field  property ="userPwd"  depends ="required,mask" >
None.gif                    
<!--  field元素的msg子元素指定验证规则对应的消息文本,该消息文本将 替代默认的消息文本,
None.gif                    即validatior-rules.xml中定义的消息文本。msg元素的值必须是应用程序消息资源包中某个消息资源的关键字。 
-->
None.gif                    
< msg  name ="mask"  key ="registerForm.password.maskmsg" />
None.gif                    
<!--  arg元素可以来向消息文本传递参数。  -->
None.gif                    
< arg  key ="lable.userPwd"   />
None.gif                    
< arg  key ="lable.mask"  resource ="true"  position ="1" />
None.gif                    
<!--  
None.gif                    <var>
None.gif                        <var-name>mask</var-name>
None.gif                        <var-value>^[a-zA-Z]*$</var-value>
None.gif                        或者用${zip}代码value内容
None.gif                    </var>
-->  
None.gif                
</ field >
None.gif            
</ form >
None.gif            
对应的资源文件如下:
None.gif lable.userName=用户名
None.giflable.userName.maxlength=5
None.giflable.userPwd=密码
None.giflable.mask=^[a-zA-Z]*$
None.gifregisterForm.password.maskmsg=测试消息
validation.xml中已经加了大量注释。
而针对上例子的Struts-config.xml配置文件中的DynaActionForm配置如下:
None.gif      <!--  动态FORM演示                          -->
None.gif      
< form-bean  name ="dynaFormForm"  type ="org.apache.struts.validator.DynaValidatorForm" >
None.gif      
< form-property  name ="userName"  type ="java.lang.String"   />
None.gif      
< form-property  name ="userPwd"  type ="java.lang.String"   />
None.gif    
</ form-bean >
注意,要使用验证框架的FormBean必须是与Validator匹配的类:ValidationForm类或DynaValidationForm类,及其子类ValidatiorActionForm和DynaValidatiorActionForm。它们都是ActionForm类的子类。
我这里用的是动态的FormBean,因此类型我由org.apache.struts.action.DynaActionForm改为org.apache.struts.validator.DynaValidatorForm,如果要验证普通的非动态的ActionForm如下:
None.gif <!--  验证框架要用在非动态FormBean上时,该FormBean必须为ValidatorForm子类  -->
None.gif    
< form-bean  name ="studentForm"  type ="struts.form.StudentForm"   />
None.gif    

我们就应该让StudentForm类继承自ValidationForm,否则达不到验证效果!
到这里Struts的笔记基本已经写完,还有标记没有写,我想标记在实例中去写比较好!我会在以后的笔记中继续!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值