简单看懂Validator

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 17:33   16   0

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP