简单看懂Validator

 

 

Validator 框架由Validator 校验类、Validator 配置文件、资源配置文件和JSP标签库组成。

1.       Validator 校验类

   Validator 框架的Validator检验类本身提供了14种默认的检验规则,这些校验规则是最常见的校验。

 

2.       Validator配置文件

通常来说,Validator配置文件是指如下两个XML文件;

  第一:Validator-rules.XML是校验规则配置文件,定义了应用程序中可以使用的Validator校验规则,换句话说,就是将所有可用的校验规则声明在Validator-rules.XML中等待被调用。

  第二:Validation.XML是具体校验配置文件,将Validator-rules.XML中的校验和应用程序结合起来的配置文件,它的名称并不一定是“Validation.XML”,可以是由程序员随意指定,甚至可以不用该文件而直接在Validator-rules.XML中指定具体校验。但为了降低耦合,还是应该分出该配置文件。就struts框架和Validator框架协同工作来看,Validation.XML将和ActionForm建立映射来校验从页面传入的数据。

 

3.       资源配置文件

说得通俗一点,资源配置文件就是报错信息文件,是为了将校验的出错信息显示给客户端而使用的,就struts框架和Validator框架协同工作来看,可以认为,它就是strutsResource绑定所指的资源配置文件。

 

4.       JSP标签库

JSP标签库用于读取资源配置文件中的报错信息,并将其显示出来。Struts框架中许多与资源配置文件相关的标签都实现了这种功能。灵位,<html:javascript>标签可以直接从Validator框架的Validator-rules.XML中得到JavaScript的校验结果。

 

备注:

Validation.XML的主要元素和属性说明

Validation.XMLvalidator_1_0.dtd作为XML的头部文件,因此将以validator_1_0.dtd来约束其表达,并以<form-validation>作为其根结点。

      作为真正的具体校验声明的实现,Validation.XML将所有具体校验声明套在<formset>元素之中,以<form>元素来表明一个ActionForm。通过<formset>元素可以做国际化校验的工作,它的language.country.varian,3个属性允许为定义的每个<form>针对每个国家声明不同的校验规则。

     <form>元素的name属性与struts-config.xml中的配置命名有很大关系。

当需要校验的ActionForm继承于validatorForm时,<form>元素的name属性应该和struts-config.xm中声明一个ActionForm所给予的标识相匹配;

当需要校验的ActionForm继承于validatorActionForm时,<form>元素的name属性应该和struts-config.xm中提交的<action>元素的path属性相匹配;

主要是通过<form>元素和ActionForm进行绑定,为ActionForm中的每个字段提供声明校验的实现。

     <form>元素有多个<field>子元素,以此来实现第每个定义在ActionForm中变量属性的校验。

     <field>元素用property属性来指明ActionForm中的一个变量属性,因此property属性的内容应该与定义在ActionForm中的变量属性相匹配、

     <field>元素的depends属性指明了该属性所依赖的校验规则,该规则应该在Validator-rules.XML中被dingy8i,由于在Validator-rules.XML中为每个校验规则提供了从资源配置文件得到的报错信息,因此当所依赖的校验规则出错后,就会以该报错信息作为本校验规则出错的提示。Depends属性中的校验规则可以有多个,并以“,”分开。

     <field>元素的<arg0>.<arg1>.<arg2>.<arg3>4个子元素会作为校验信息显示的替换参数所用,它将替换本条校验规则报错所取得的报错信息的{0}{1}{2}{3}

每个<argX>元素都有key,nameresource三个属性。

key属性指定了资源配置文件中的一个“键”,因此替换报错信息时也会从资源配置文件中得到<argX>的内容。

        Name属性的内容应该是<field>元素的depends属性校验规则中的一个,它将指定为某个校验规则进行报错信息的替换。当然,name属性也可以不出现,这样框架默认就会以<argX>来替换校验规则所需要的报错信息。

        若不需要使用配置文件中的信息来替换<argX>,而直接使用字面文字,那么就应该出现resource属性,并将它设置为“false,这时key属性的内容就会直接作为字面文字来实现替换了。

     <msg>子元素允许<field>元素的校验规则提供另一条报错信息,而不是默认的从Validator-rules.XML得到的报错信息。<msg>属性同一拥有key.name,resource三个属性,它们的作用和<argX>元素的三个属性一样。

     <var>子元素允许为校验规则提供额为的值。因为通常来说,校验并不是简单的无值或固定值校验,而是需要通过外间传递过来的值进行判断,<var>元素就提供了这个功能。<var>通过它本身的<var-name><var-value>两个子元素来传入校验需要值。

 

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE form-validation PUBLIC
  3.           "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
  4.           "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
  5. <form-validation>
  6.     <formset>
  7.         <form name="loginForm">
  8.             <field property="userName" depends="required,minlength">
  9.                 <arg0 key="login.userName" />
  10.                 <arg1 name="minlength" key="${var:minlength}"
  11.                     resource="false" />
  12.                 <var>
  13.                     <var-name>minlength</var-name>
  14.                     <var-value>6</var-value>
  15.                 </var>
  16.             </field>
  17.             <field property="userPassword"
  18.                 depends="required,minlength">
  19.                 <arg0 key="login.password" />
  20.                 <arg1 name="minlength" key="${var:minlength}"
  21.                     resource="false" />
  22.                 <var>
  23.                     <var-name>minlength</var-name>
  24.                     <var-value>6</var-value>
  25.                 </var>
  26.             </field>
  27.         </form>
  28.     </formset>
  29. </form-validation>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值