Struts2数据校验(2)--使用XWork检验框架实现校验

2.使用XWork检验框架实现校验

通过XWork的validator框架也可以进行Struts2的数据校验,使用XWork的validator框架实现数据校验,只需编写一个验证文件便可。

1.验证文件

验证文件由两种:一种是actionName-validation.xml,actionName是需要校验的Action的类名,且需要放到和该类相同的路径下,这种校验和validate()方法的作用相同;另一种是

actionName-methodName-validation.xml,actionName是需要校验的Action的类名,methodName是Action中某个业务处理方法的方法名,且需要放到和该类相同的路径下,这种校验和validateX()方法的作用相同。

2.校验配置
(1)字段校验方式(Field-validator)

采用字段验证方式时,field是作为基本的子元素。

l  validators:校验文件的根元素;

l  field:是validators元素下的元素,name属性指定了被校验的字段;

l  field-validator:field元素下的元素,type属性用来指定校验器的名称,每个field-validator元素都可以指定一个校验规则且每个field-validator属性都必须包含一个message元素;

l  message:field-validator元素下的必备元素,该元素指出校验出错后的提示信息;

l  param:field-validator元素下的元素,该元素指定了校验过程中使用到的参数。

示例如下:

<?xml version="1.0" encoding="GBK"?>

<!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="name">

        <field-validator type="requiredstring">

            <message>the name is requred!</message>

        </field-validator>

    </field>

    <field name="age">

        <field-validator type="int">

            <param name="min">1</param>

            <param name="max">150</param>

            <message>the age must be from 1 to 150!</message>

        </field-validator>

    </field>

</validators>

(2)非字段校验方式(Non-Field validator)

采用非字段校验方式时,validator元素是它的基本单位,每个validator元素指定一个校验规则。

l  validators:校验文件的根元素;

l  validator:validators元素下的元素,type属性指定了校验器的名称。一般情况下,该元素应该包含子元素<param name=”filedName”>以指定被校验的Action名。

l  param:validator元素下的元素。

示例如下:

<?xml version="1.0" encoding="GBK"?>

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"

    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

 

<validators>

    <validator type="int">

        <param name="fieldName">age</param>

        <param name="min">1</param>

        <param name="max">150</param>

        <message>the age must be from 1 to 150!</message>

    </validator>

    <validator type="email">

        <param name="fieldName">email_address</param>

        <message>The eamil address you entered is not valid.</message>

    </validator>

</validators>

上面介绍的两种校验方式都可以达到同样的效果,只是格式针对的对象不同。字段校验方式主要针对字段和属性,使用这种方式在校验时,对任何一个字段都能够返回一个明确的消息;而非子段校验方式则是将字段有效的组合在一起,这种方式不能对一个字段返回一个明确的消息。

3.校验器(validator)

字段校验方式和非字段校验方式校验方式,都需要用到校验器,下面就介绍一些常用的校验器。

(1)      required校验器:要求指定的字段必须是非空的;

required字符校验方式:

<validators>

    <field name="name">

        <field-validator type="required">

            <message>the name is required!</message>

        </field-validator>

    </field>

</validators>

 

required非字符校验方式:

<validators>

<validator type="required">

        <param name="fieldName">name</param>

        <message>the name is required!</message>

    </validator>

</validators>

 

(2)      requiredstring校验器:要求字段值必须非空且长度必须大于0;

requiredstring字符校验方式:

<validators>

    <field name="name">

        <field-validator type="requiredstring">

            <message>the name is required!</message>

        </field-validator>

    </field>

</validators>

 

requiredstring非字符校验方式:

<validators>

<validator type="requiredstring">

        <param name="fieldName">name</param>

        <message>the name is required!</message>

    </validator>

</validators>

 

(3)      int校验器:整数校验器,可以指定字段的整数值必须在指定的范围内,需要标注min和max参数。(注:long、short和浮点数等校验器和int校验器类型)

int字符校验方式:

<validators>   

    <field name="age">

        <field-validator type="int">

            <param name="min">1</param>

            <param name="max">150</param>

            <message>the age must be from 1 to 150!</message>

        </field-validator>

    </field>

</validators>

 

int非字符校验方式:

<validators>

    <validator type="int">

        <param name="fieldName">age</param>

        <param name="min">1</param>

        <param name="max">150</param>

        <message>the age must be from 1 to 150!</message>

    </validator>

</validators>

 

(4)      date校验器:要求指定字段的日期在指定的范围内;

date字符校验方式:

<validators>

    <field name="birthday">

        <field-validator type="date">

            <message>The date you entered is not valid.</message>

        </field-validator>

    </field>

</validators>

 

date非字符校验方式:

<validators>

<validator type="date">

        <param name="fieldName">birthday</param>

        <message>the name is requred!</message>

    </validator>

</validators>

 

(5)      email校验器:用来校验邮箱地址是否合法;

email字符校验方式:

<validators>

    <field name=" email_address ">

        <field-validator type=" email ">

            <message> The eamil address you entered is not valid.</message>

        </field-validator>

    </field>

</validators>

 

email非字符校验方式:

<validators>

    <validator type="email">

        <param name="fieldName">email_address</param>

        <message>The eamil address you entered is not valid.</message>

    </validator>

</validators>

 

(6)      stringlength校验器:校验字段的长度必须在指定的范围内。

stringlength字符校验方式:

<validators>   

    <field name="name">

        <field-validator type="stringlength">

            <param name="minLength">6</param>

            <param name="maxLength">20</param>

            <message>the name must be from 6 to 20 char!</message>

        </field-validator>

    </field>

</validators>

 

stringlength非字符校验方式:

<validators>

    <validator type="stringlength">

        <param name="fieldName">name</param>

        <param name="minLength">6</param>

        <param name="maxLength">20</param>

        <message>the age must be from 6 to 20 char!</message>

    </validator>

</validators>

 

注释:如果想知道更多的校验器,可以找到位于xwork-2.0.4.jar压缩包中( com.opensymphony.xwork2.validator.validators)有个文件default.xml ,该文件中定义了Struts2框架内建的校验器。default.xml文件定义了常用的校验器类型,如下:

<validators>

    <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>

    <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>

    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>

    <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>

    <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>

    <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>

    <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>

    <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>

    <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>

    <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>

    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>

    <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>

    <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>

    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>

    <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>

    <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>

</validators>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值