Struts Validator 开发指南
编写扩展Struts Validator校验密码输入.... 7
1.编写一个校验器(Validator),实现对form中两个字段的一致性校验: 7
2.编写validator-rules文件,增加一个自定义校验器的配置: 8
使Struts支持Validator
要在Struts项目中使用Validator功能,首先需要配置Struts项目,使其支持Validator框架.Struts通过一个插件(Plugin)来使Struts项目支持Validator.这个Plugin由Struts默认提供,用户也可以自己开发自己的Validator Plugin.Struts默认提供的Plugin为:
org.apache.struts.validator.ValidatorPlugIn.
用户必须在struts-config.xml 文件中配置这个Plugin,才能使Struts项目支持Validator.配置方法比较简单,通过任何文本编辑器打开struts-config.xml 文件,在这个文件的末尾加上下面的代码,重新启动J2EE服务器就可以实现对Validator的支持了.
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> </plug-in> |
在Jbuilder开发环境中可以通过下面的方法使Struts项目支持Validator框架.
1. 在项目管理器中用鼠标右键点击Web项目(在我们的项目中是 WebModule ).
2. 选择菜单的 “Properties…”菜单项.
3. 在弹出的对话框的左边树型结构中选中 “web” 节点.
4. 在右边的 “JSP/Servlet frameworks” 框中勾选 “sturts
5. 点击 “OK” 按钮完成配置.
6. 检查 struts-config.xml 文件,可以看到配置文件里已经加入了Validator Plugin.
Validator-rules.xml文件
Validator-rules.xml文件是校验器的定义文件.指定了每一个校验器的基本信息和执行校验的JavaScript代码.Struts默认提供了十四个校验器,这些校验器可以满足我们平时项目开发中碰到的绝大多数的输入校验要求.如果这些校验器不能满足用户的校验要求,那么我们也可以开发自己的校验器.我们项目主就实现了一个校验密码的一致性的Validator.
Struts提供的校验器包括Required Validator ,Requiredif Validator, MinLength Validator , MaxLength Validator , Mask Validator , Byte Validator , Short Validaotr , Integer Validator , Long Validator , Float Validator , Double Validator , Date Validator , Range Validator , IntRange Validator , FloatRange Validator , CrediteCard Validator , Email Validator 等校验器.后面我将讲述一些比较常用的校验器的使用方法.
Validator.xml 文件
Validator.xml 文件用来定义用户需要校验的每一个JSP Form中的每一个字段的校验规则,这个文件是我们在Struts项目开发中使用Validator框架所需要配置的文件.这个文件的根节点是<form-validator>,在根节点下的<formset>节点的<form>子节点就对应了我们在开发JSP文件是所定义的Form标记,也对应这struts-config.xml中的form bean的定义.一个<form>节点由多个<field>节点组成,每个<field>节点的结构大概如下:
<field property="password" depends="required,minlength,twofields"> <msg name="required" key="test.required"/> <msg name="minlength" key="test.minlength"/> <msg name="twofields" key="test.twofields"/> <arg0 key="test.password" /> <arg1 name="minlength" key="${var:minlength}" resource="false" /> <var> <var-name>minlength</var-name> <var-value>8</var-value> </var> <var> <var-name>secondProperty</var-name> <var-value>password2</var-value> </var> </field> |
其中一个<Field>对应于一个Form Bean的一个Field,<Field>标记的property属性说明了这个Field对应的Form Bean的Field名称,这个名称要跟struts-config.xml文件中的<form-bean>中定义的名字一致.depends属性说明了这个Field依赖于那些校验器的校验,可以使用多个校验器,各个校验器之间使用逗号隔开.<msg>标记说明了当这个Field通不过校验的时候向用户提供的错误信息.name属性指定了对应的校验器,key属性指定了定义在ApplicationResources.properties文件中的错误信息.<arg0>和<arg1>是传递给校验器的参数.<var>标记定义了参数的名字和参数值.上面的这个例子说明了password字段由Required,Minlength,Twofields校验器进行校验.指定了这个Field不能为空,而且最小长度不能小于8为,并且必须和同一个Form中的另一个名为password2的字段相同.如果用户的输入不能满足这些要求,校验器将会抛出异常.
下面开始将怎么在这个配置文件中配置各个校验器实现对form中的多中类型的field进行校验.
Required Validator
这个校验器用来校验Form的输入数据不能为空.如果某一个Form 的 Field 依赖于这个校验器,那么如果用户在Form中没有输入这个Field对应的输入数据时,Required校验器将会触发一个Exception,这个Exception的错误信息可以在页面或者服务端被捕捉到.
例子:
<field property="test" depends="required"> <msg name="required" key="test.required"/> <arg0 key="test.testField.displayName"/> </field> |
上面的例子说明了test字段的校验规则是不能为空,在ApplicationResources.properties中的相应的定义信息可能是下面这样的情况:
Test.testField.displayName =测试字段 #上面在<arg0>标记中定义的key= “test.testField” 对应这个信息 Test.required={0} 不能为空,请重新输入. #在上面定义的<msg>标记对应这个信息 |
如果Validator校验到用户没有输入test这个字段,就会将test.testField对应的信息作为test.required的参数传递给校验器,如果在JSP页面中捕捉了错误信息,错误信息将会是下面的这个形式:
“测试字段 不能为空,请重新输入”
Mask Validator
Mask Validator校验用户输入的数据是否遵照一定的规则,这个规则由开发者在validator.xml文件中定义.
例子:
<field property="postalCode" depends="mask"> <arg0 key="test.postalCode.dis |