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

我们就应该让StudentForm类继承自ValidationForm,否则达不到验证效果!

相关文章:

  • 2021-10-07
  • 2021-10-31
  • 2018-11-13
  • 2022-12-23
  • 2021-05-08
  • 2021-12-23
猜你喜欢
  • 2021-07-11
  • 2022-12-23
  • 2023-03-21
  • 2022-12-23
  • 2022-12-23
  • 2021-05-26
  • 2021-05-15
相关资源
相似解决方案