Validator框架如今成为Jakarta的公共项目的一部分,Struts携带了Validator框架,主要是两个jar文件,jakarta-oto.jar和commons-validator.jar文件.前者提供了一组处理文本的类,具有文本替换过滤和分割等功能,后者提供了一个简单的,可扩展的验证框架,包含了通用的验证方法和验证规则.如果Struts使用Validator需要添加那两个jar文件到lib目录.Validator框架采用了两个基于XML的配置文件来配置验证规则,这两个文件是validator-rules.xml和validation.在Struts应用中,它们放在WEB-INF目录.
Validator-rules.xml文件包含了一组通用的验证规则,对所有的String都适用.一般的情况下没必要修改,除非需要修改或者扩展默认的规则.建议如果想扩展默认的验证规则,最好把自定义的客户化规则放在另一个XML文件中,这样当升级Validator框架版本的时候,也无需修改validator-rules.xml文件.因为这个XML是不推荐修改的,所以我只是简单的介绍一下具体的<validator>元素的几个属性,至于具体需要开发人员来开发的是validation的XML文件.<validator>元素的name属性指定验证规则的逻辑名,这个名字必须唯一.还有classname和method属性分别指实现验证规则逻辑的类和方法.msg属性指定来自Resource中的消息key,验证失败,根据这个消息Key去找匹配的消息文本.depends属性指定在调用当前验证规则之前必须调用其他验证规则.
Validator插件需要在Struts配置文件中配置ValidatorPlugIn插件如下:
<plug-in className=”org.apache.struts.validator.ValidatorPlugIn”>
<set-property
property=”pathnames”
value=”/WEB-INF/validator-rules.xml/WEB-INF/validation.xml”/>
</plug-in>
当应用启动时,Struts框架会加载ValidatorPlugIn插件,并调用它的init()方法,根据pathnames属性,加载相应的validator-rules.xml和validation.xml文件,把验证信息读入到内存中.
创建扩展ValidatorForm或者ValidatorActionForm类的ActionForm类,如果使用动态的ActionForm,则无需创建扩展DynaValidatorForm或者DynaBalidatorActionForm类的子类,可以直接进行.