验证器(编码方式,验证框架方式)之验证框架方式

Struts2的校验框架(有效的xml文件)。具体来说分为字段优先校验器与校验器优先校验器。

校验框架的XML文件是放在跟待校验Action是放在同一个包下面的.命名也有规则.如RegisterAction-validation.xml这个XML文件是通过DTD来验证的.dtd从哪里来?去示例哪里找.他的dtd的声明如下:

<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

字段优先校验器以Action里面的字段做为参考,对他施加校验规则.典型的如下:

<field name="username">
        <field-validator type="requiredstring">
            <message>
            username can't be blank
            </message>
        </field-validator>
        <field-validator type="stringlength">
        <param name="minLength">4</param>
        <param name="maxLength">6</param>
       
        <message>length of username must between 4 and 6</message>
       
        <message>length of username must between ${minLength} and ${maxLength}</message>
        <!--
        <message key="username.invalid"/>

        -->

        </field-validator>
    </field>

field-validato称为验证规则,message为验证不通过时的错误信息,注意message里面可以用类似这样的方式${minLength} ,并且message的提示信息还可以跟国际化关联起来如这个<message key="username.invalid"/>,但这个国际化资源文件的命名是有规则的,对于国际化的资源文件,其命名规则是:package_语言名_国家名,比如package_zh_CN,package_en_US,param指定这个校验器额外的信息,如最小长度,最大长度.

疑问:校验规则从哪里来呢?是从xwork来的,查看com.opensymphony.xwork2.validator.validators里面的类和default.xml文件,这个default.xml文件里面配置了默认的校验规则,如其中一个<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>,即是用RequiredStringValidator这个类去进行验证

再问:校验器的param参数从哪里来的呢?就在他的那些类里面,得到之后就set进去,实际上他也是调用了一个validate的方法.

校验器优先:以校验器为参照物,对他施加字段,他是先有校验器,后才施加字段.<param>name=fieldName是固定的.典型的如下:

    <validator type="requiredstring">
<param name="fieldName">username</param>
<message>username can't be blank</message>
</validator>
<validator type="stringlength">
<param name="fieldName">username</param>
<param name="minLength">4</param>
          <param name="maxLength">6</param>
          <message>length of username must between ${minLength} and ${maxLength}</message>
</validator>

通过断点调试可以知道校验框架,自定义的验证方法,struts提供的validate方法的执行顺序.最后才会检查Action级别和Field级别里面有没有错误消息,然后再作其他的处理.

Struts2框架校验执行的先后顺序:
1) 首先执行校验框架(xml文件)
2) 执行自定义方法的校验方法(validateMyExecute)

3) 执行validate方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yjsuge

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值