1)首先 你的 actionFrom 应该继承validatorfrom (或者validatrorActionFrom,为了不把这篇简单的介绍搞的那么复杂,下面这篇文章都使用validatorFrom。validatrorActionFrom 是 validatrorFrom 的一个子类,在使用上与validatorFrom 配置差不多,只有一点点区别。实际上就是一点点的区别决定了他们使用的位置不同)
由于validatorFrom 已经实现了validate 方法 。所以要求你把validate 方法删除 或者注释掉。
2)将validator-rules 里面的 # Struts Validator Error Messages 这句下面的 error 信息copy到你的资源文件中。jb里面默认的是ApplicationResources.properties 里面这些是validate框架默认的错误信息。虽然是可以改,但一般都是使用这个默认的错误信息
validator-rules 里提供了许多的默认验证规则为了让大家了解下这个xml文件。下面我尝试这分析下
一个节点
<validator name="required" ----验证的规则 对应validation 中的depends信息
classname="org.apache.struts.validator.FieldChecks" --验证调用的类
method="validateRequired" ---验证类对应调用的方法
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest" --validateRequired的方法签名
msg="errors.required" --对应的错误信息 />
3)在validation里面增加验证信息每个需要验证的表单就增加一个<formset> 节点
还是老办法吧,分析一个简单的formset 节点吧。
<formset>
<form name="actionForm"> --要验证的acrionFrom的名字 如果你的 from 是继承 validatorfrom,建议你到struts-config.xml里面对应的action的name属性的值copy过来
<field property="username" depends="required,minlength"> --需要验证的字段名 depends 对应
validator-rules 的validator 的name 属性多个验证规则之间用","分割
<arg0 key="prompt.username"/> --对应验证错误信息中的{0}的信息 key 的值你应该在ApplicationResources.properties 里面找到相应的key
<arg1 key="${var:namemin}" name="minlength" resource="false"/> --key 对应的是下面那个var-name的值 name 对应的是你那个验证规则的参数 resource 表示你是否从配置文件中读取信息
<var>
<var-name>namemin</var-name> --动态参数
<var-value>6</var-value> --配置的值
</var>
</field>
</form>
</formset>
4)在struts-config 里面配置增加validate 插件
将
<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-config文件中
5)在你验证的页面上增加<html:errors/>标签
好了validator的服务器端验证就完成了。。当然你要使用确保你的表单提交是可以到达actionServlet。。。。
validator 还提供了客户端的javascript 验证,我尝试了下。虽然生成了js代码但是却没有调用js代码。真是郁闷哈。。
另外:动态的form 这么使用validator 框架进行验证。希望晓得的朋友交流下。。