Struts快速学习指南11(内部培训教材)-大部分素材来自于《Programming Jakarta Struts》一书

类别:Java 点击:0 评论:0 推荐:
1.1.1.1.1.1            validation.xml

Validator框架所需要的第二个配置文件是validation.xml,这个配置文件是具体应用(项目)所特定的,可以根据你的应用(项目)情况进行自定义配置。它描述了具体的ActionForm使用validation-rules.xml文件中的哪个校验规则进行校验。

validation_1_1.dtd定义了validation.xml的结构,根元素为form-validation,其包含0到多个global元素和一到多个formset元素:

<!ELEMENT form-validation (global*, formset+)>

global元素包含0到多个constant子元素:

<!ELEMENT global (constant*)>

constant子元素和Java里面常量的含义是一样的,下面的片断定义了两个常量:

<global>

 <constant>

  <constant-name>phone</constant-name>

  <constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</constant-value>

 </constant>

 <constant>

  <constant-name>zip</constant-name>

  <constant-value>^\d{5}(-\d{4})?$</constant-value>

 </constant>

</global>

上面的片断包含了两个常量,phone 和zip,这些常量在所有formset元素中有效,在formset中通过名称引用这些常量。

下面的片断展示了一个简单的validation.xml文件说明:

代码片断 3.3.3.3.1.3.1

<form-validation>

 <global>

  <constant>

   <constant-name>phone</constant-name>

   <constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$</constant-value>

  </constant>                 

 </global>

 <formset>  

  <form name="checkoutForm">

   <field

     property="phone"

     depends="required,mask">

     <arg0 key="registrationForm.firstname.displayname"/>

     <var>

       <var-name>mask</var-name>

       <var-value>${phone}</var-value>

     </var>    

    </field>   

   </form>           

  </formset>  

</form-validation>

在上面的代码片断中,var元素应用了在global中定义了phone常量,用来配合对phone属性的校验。

formset元素可以包含两个子元素,constant和form。constant元素和global区域定义的constant元素格式和用途一样,只不过作用范围不同,在formset中定义的constant元素其作用范围只限于该formset覆盖区域。Formset元素中的form元素至少要出现一次。DTD描述如下:

<!ELEMENT formset (constant*, form+)>

form元素定义了需要进行校验的域,其name属性对应应用中分配给form的标识,在Struts框架中,就是在Struts配置文件中form-beans区域定义的ActionForm的name属性。

下面是form元素的DTD定义:

<!ELEMENT form (field+)>

field元素指明了JavaBean中需要被校验的属性。在上面的代码片断中,在Struts中,ActionForm就是这个需要被校验的JavaBean。在代码片断 3.3.3.3.1.3.1中,定义了对Struts配置文件中名称为checkoutForm的ActionForm所拥有的名称为phone的属性的校验说明,表示checkoutForm的phone属性为必填项而且符合${phone}所定义的正则表达式的掩码规则。field元素的属性在下表中具体描述:

属性

描述

property

JavaBean(在Struts为ActionForm)中需要被校验的属性的名称。

depends

应用于property指定属性的校验规则列表,多个校验规则之间用逗号分隔。

page

这个属性在应用于“向导”模式的form中,用来确保不会跳页访问。

indexedListProperty

不会用

表3.3.3.3.1.3.1 field元素的属性列表

field元素包含以下几个子元素,DTD定义如下:

<!ELEMENT field (msg?, arg0?, arg1?, arg2?, arg3?, var*)>

msg子元素允许你为该field指定一个提示信息,校验规则将会使用这个指定的提示信息替代规则默认的提示信息,msg子元素的值必须是应用资源文件的一个关键字(key)。例如:

<field property="phone" depends="required,mask">

  <msg name="mask" key="phone.invalidformat"/>

  <arg0 key="registrationForm.firstname.displayname"/>

  <var>

    <var-name>mask</var-name>

    <var-value>${phone}</var-value>

  </var>               

</field>

本文地址:http://com.8s8s.com/it/it16593.htm