一、配置Validator框架
1、依赖两个JAR文件:jakarta-oro.jar和commons-validator.jar。
2、validator-rules.xml和validation.xml这两个基于XML的配置文件来配置验证规则。validator-rules.xml配置文件在加入struts支持时会自动添加到WEB-INF下,validation.xml文件是针对某个具体struts应用,开发人员自行创建。
3、采用插件机制把validator加入到struts框架中,在struts配置文件中配置validatorPlugIn插件。如:
- <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
- <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation_login.xml" />
- </plug-in>
二、Validator框架不能验证标准的org.apache.struts.action.ActionForm类,若要使用,应该采用ActionForm类的两个子类org.apache.struts.validator.DynaValidatorForm和org.apache.struts.validator.ValidatorForm,这两个类都实现了validate()方法,故创建
它们子类时就不用再覆盖validate()方法了。
1、实体ActionForm如果想通过Validator框架进行验证的话,你的ActionForm要继承于ValidatorForm
2、动态ActionForm如果想通过Validator框架进行验证的话,你的动态ActionForm要继承于DynaValidatorForm
三、validation.xml配置文件
validation.xml文件的头和validator-rules.xml一样,根节点也一样。
- <form-validation>
- <formset>
- <form name="ActionForm名称">
- <field property="属性名称" depends="规则名称,用逗号隔开">
- <msg name="验证规则名称" key="如果这个验证规则没过,将显示的资源文件中消息key值" />
- <arg0 name="规则名称" key="${var:参数名}" resource="false" />
- </field>
- </form>
- </formset>
- </form-validation>
设置单个验证门限:minlength,maxlength
- <field property="phone" depends="required,long,minlength,maxlength">
- <!-- 验证是否为空 -->
- <msg name="required" key="errors.required"/>
- <arg0 name="required" key="phone" resource="false"/>
- <!-- 验证是否为数字 -->
- <msg name="long" key="errors.number"/>
- <arg0 name="long" key="phone" resource="false"/>
- <msg name="minlength" key="errors.minlength"/>
- <arg0 name="minlength" key="phone" resource="false"/>
- <arg1 name="minlength" key="${var:minlength}" resource="false"/>
- <!-- 设定门限 -->
- <var>
- <var-name>minlength</var-name>
- <var-value>7</var-value>
- </var>
- <msg name="maxlength" key="errors.maxlength"/>
- <arg0 name="maxlength" key="phone" resource="false"/>
- <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
- <!-- 设定门限 -->
- <var>
- <var-name>maxlength</var-name>
- <var-value>10</var-value>
- </var>
- </field>
设置多个验证门限:intRange
- <!-- 验证是否为email格式-->
- <field property="email" depends="required,email">
- <msg name="required" key="errors.required"/>
- <arg0 name="required" key="email" resource="false"/>
- <msg name="email" key="errors.email"/>
- </field>
- <field property="age" depends="required,integer,intRange">
- <msg name="required" key="errors.required"/>
- <arg0 name="required" key="age" resource="false"/>
- <msg name="integer" key="errors.number"/>
- <arg0 name="integer" key="age" resource="false"/>
- <msg name="intRange" key="errors.range"/>
- <arg0 name="intRange" key="age" resource="false"/>
- <arg1 name="intRange" key="${var:min}" resource="false"/>
- <arg2 name="intRange" key="${var:max}" resource="false"/>
- <!-- 设定多个门限 规定:设定mix和max即可-->
- <var>
- <var-name>min</var-name>
- <var-value>0</var-value>
- </var>
- <var>
- <var-name>max</var-name>
- <var-value>100</var-value>
- </var>
- </field>
<arg0/> 、<arg1/> 、<arg2/> 、<arg3/> 只有这四个,这是规定。分别对应资源文件里的{0}、{1}、{2}、{3}。
例如资源文件:
- errors.required={0} is null!
- errors.minlength=minlength of {0} is {1}!
- errors.maxlength=maxlength of {0} is {1}!
- errors.email=email is error!
- errors.number=phone is not a number!
- errors.range={0} must between {1} and {2}!
validator-rules.xml配置文件里还有很多其它的验证,如正则表达式、条件门限验证,都一样!