validate使用了2个配置文件,一个是validation.xml,一个是validator-rules.xml.分别就2者的用途作一
描述:
1) validator-rules.xml:
定义一些通用的javascript校验规则.注意--如果<validator>标签含有一个名为:
msg属性,则表示这个属性的值在资源文件中被定义.例如:
<validator name="requiredif"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequiredIf"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required">
</validator>
其中msg=errors.required,在属性文件中找到:
errors.required={0} is required.
这样就实现了通用校验规则的动态信息提示
我们也可以自己扩展这个文件,定义我们需要的校验规则,只要参照里面的格式就行.
2) validation.xml:
针对页面form表单项指定校验规则.如
<form name="registrationForm">
<field property="firstName"
depends="required,mask,minlength">
<arg0 key="registrationForm.firstname.displayname"/>
<arg1 name="minlength" key="${var:minlength}" resource="false"/>
<var>
<var-name>mask</var-name>
<var-value>^/w+$</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
...
其中form 属性中的name值要和struts-config.xml中的formbean的属性值一样.
field属性表示表单项.
depends表示该表单项需要进行的校验判断.
<arg0 key=...>表示校验firstName属性时第一种可能显示的错误信息.
<arg1 name="minlength" key="${var:minlength}" resource="false"/>中key的表示在validator-rules.xml
中定义了名为minlength的校验规则. name="minlength"中的minlength变量名在下面使用:
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
表示传入的值为5.
3)启用检验规则:在struts-config.xml中加入下面2段定义.(注意:在<action-mappings> 定义结束后添加,
不同版本,参照不同的tld定义)
<!-- ========== Message Resources Definitions =========================== -->
<message-resources
parameter="org.apache.struts.webapp.validator.ApplicationResources"/>
<!-- ========== Plug Ins Configuration ================================== -->
<!--
Add multiple validator resource files by setting the pathnames property
with a comma delimitted list of resource files to load.
-->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
这样校验规则即告生效.
4)在jsp显示错误信息:
在jsp页面加上:
<logic:messagesPresent>
<ul>
<html:messages id="error">
<li><bean:write name="error"/></li>
</html:messages>
</ul><hr>
</logic:messagesPresent>
5)对应的form应该继承ValidatorForm类
public final class RegistrationForm extends ValidatorForm implements Serializable
{
...
}