Validator框架已成为Jakarta的公共项目的一部分可以从下载单独的Validator框架在Struts中已经带了这个框架
Validator主要依赖两个jar包
Jakartaorojar-提供一组处理文本的类具有文本替换过滤和分割功能
Commonsvalidatorjar提供了一个简单可扩展的验证框架包含了通用的验证方法和验证规则
在用Struts中用这个框架需加入这两个包用起来感觉还不错
下面介绍一下
Validator采用基于两个xml文件的方式来配置验证规则分别为validationxmlvalidatorrulesxml在struts应用中需放到webinf目录下
.validatorrulesxml
这个文件包含了一组验证规则对所有struts应用都适用一般情况不用修改这个文件除非要修改或扩展默认规则如果要给应放到另一个xml文件中而不是直接添加到validatorrulesxml文件中这样当Validator升级时不用修改validatorrulesxml文件
.validatorxml文件
这个文件是针对于具体struts应用的他可以为应用中的ActionForm配置验证规则而不用编码实现验证
例如一个验证登陆form的例子要求用户名必须填写秘密要求必填最大最小长度及其内容的要求
代码
<formvalidation>
<global>
<! 密码由数字个英文字母或者下划线组成的字符串 >
<constant>
<constantname>pwd</constantname>
<onstantvalue>^\w+$</onstantvalue>
</constant>
</global>
<formset>
<form name=loginForm>
<! 这里的用户名使用邮箱验证时使用正则表达式进行验证 >
<field property=useruserId depends=required>
<arg key=useruserId />
</field>
<field property=useruserPwd depends=requiredminlengthmaxlengthmask>
<! msg name=mask key=errorsinvalid />
<arg key=useruserPwd />
<arg name=minlength key=${var:minlength} resource=false />
<arg name=maxlength key=${var:maxlength} resource=false />
<var>
<varname>mask</varname>
<varvalue>^\w+$</varvalue>
</var>
<var>
<varname>minlength</varname>
<varvalue></varvalue>
</var>
<var>
<varname>maxlength</varname>
<varvalue></varvalue>
</var>
</field>
</form>
</formset>
</formvalidation>
validatorxml和validatorrulesxml文件的语法不在这里说明
Validator插件
为了在struts中用validator可以用插件方式加载Validator框架需在struts配置文件中配置ValidatorPlugIn插件同时写明两个xml文件的路径
应用启动时Strust会加载这个插件并调用他的init()方法init()方法根据pathnames加载
相应的validatorxmlvalidatorxml文件把验证信息读入到内存中
代码
<plugin className=orgapachestrutsvalidatorValidatorPlugIn> <setproperty value=/WEBINF/validatorrulesxml/WEBINF/validationxml property=pathnames /> </plugin>
.Validator和ActionForm
Validator框架不能直接orgapachestrutsactionActionForm应采用ActionForm的两个子类
ValidatorActionForm和ValidatorForm
DynaValidatorActionFrom继续自DynaValidatorForm
支持动态在ActionFrom中使用Validator框架
ValidatorFormActionForm继承ValidatorForm
支持在标准ActionForm中使用Validator框架
DynaValidtaorForom和ValidatorForm类都实现了validator()方法如果验证失败就会返回包含错误消息的ActionMessage对象并把该对象添加到ActionErrors集合对象中由validator方法最后返回ActionErrors对象
ValidatorForm有一个子类ValidatorActionForm
ValidatorForm
Strust配置文件的元素的name属>validatorxml文件