Strusts2数据校验的方法二(通过XWork校验框架实现)

来源:互联网 发布:梅西和c罗谁厉害 知乎 编辑:程序博客网 时间:2024/05/17 08:04

使用validate()方法校检是,如果web应用中存在大量Action就需要多次重写validate()方法,这就会使代码变得繁琐,所以引入XWork校验框架。
使用这个方法就要添加一个验证文件LoginAction-validation.xml,(在方法一的例子基础上修改)代码如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN""http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators>    <field name="age">        <field-validator type="int">            <param name="min">10</param>            <param name="max">40</param>            <message>the age must be from 10 to 40!</message>        </field-validator>    </field>    <field name="name">        <field-validator type="requiredstring">            <message>the age must be from 10 to 40!</message>        </field-validator>    </field></validators>

然后把LoginAction.java中的validate()和validateLog()方法删除,运行程序又会得到相同的结果。

这个方法有几点要注意:
1.命名,校验文件的命名规则:actionName-validation.xml,actionName是需要校检的Action的类名。
还可以为Action中某个特定的业务处理方法专门定义个校检文件,命名规则为:actionName-methodName-validation.xml,methodName指的就是某个业务方法名。
2.校验配置,分两种,字段校验方式和非字段校验方式。

字段校验方式:
<validators>    <field name="age">        <field-validator type="int">            <param name="min">10</param>            <param name="max">40</param>            <message>the age must be from 10 to 40!</message>        </field-validator>    </field>    <field name="name">        <field-validator type="requiredstring">            <message>the age must be from 10 to 40!</message>        </field-validator>    </field></validators>
非字段校验方式:
<validators>        <field-validator type="int">            <param name="fieldName">age<param>            <param name="min">10</param>            <param name="max">40</param>            <message>the age must be from 10 to 40!</message>        </field-validator>    </field></validators>

3.校验器

(1)required校验器,用来校验制定字段非空
<feild name="name">    <field-validator type="required">        <message>the name must be not be null</message>    </field-validator></field>
(2)requiredstring要求字段非空且长度大于0
<feild name="name">    <field-validator type="requiredstring">        <message>the name is required</message>    </field-validator></field>
(3)int校验器,顾名思义,校验整数
<feild name="age">    <field-validator type="int">        <param name="min">10</param>        <param name="max">40</param>        <message>the age must be from 10 to 40!</message>    </field-validator></field>
0 0