JAVA—咖啡馆

——欢迎访问rogerfan的博客,常来《JAVA——咖啡馆》坐坐,喝杯浓香的咖啡,彼此探讨一下JAVA技术,交流工作经验,分享JAVA带来的快乐!本网站部分转载文章,如果有版权问题请与我联系。

BlogJava 首页 新随笔 联系 聚合 管理
  447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

一、使用校验规则创建Person-validation.xml文件


       为了利用WebWork校验框架实现数据校验有两件事情要做,第一是创建一个validation.xml文件,第二是在需要进行校验的action中加入一个校验interceptor引用。

       WebWork允许两种类型的校验 —— per-action和model-based。因为所有的Action对Person引用都要使用相同的校验规则,所以本文将使用model-based类型的校验。

       在src/dao/**/model目录下创建Person-validation.xml文件并加入下列内容:

 

 1<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN"  
 2  "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd"> 
 3<validators> 
 4    <field name="person.firstName"> 
 5        <field-validator type="requiredstring"> 
 6            <message key="errors.required"/> 
 7        </field-validator> 
 8    </field> 
 9    <field name="person.lastName"> 
10        <field-validator type="requiredstring"> 
11            <message key="errors.required"/> 
12        </field-validator> 
13    </field> 
14</validators> 

 

       在ApplicationResources_*.properties文件中的"errors.message" 键值使用字段的"name"属性以实现国际化。如果不需要提供对i18n的支持可以直接对<message>元素中指定显示内容。 

1errors.required=${getText(fieldName)} is a required field.

 

       现在可以配置PersonAction使用visitor validation。为了实现这个目标,在PersonAction目录下创建一个PersonAction-validation.xml文件。加入下面的内容:

 

 1<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN"      
 2    "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd"> 
 3<validators> 
 4    <field name="person"> 
 5        <field-validator type="visitor"> 
 6            <param name="appendPrefix">false</param> 
 7            <message/> 
 8        </field-validator> 
 9    </field> 
10</validators>  


        糟糕的是,WebWork没有提供一个透明机制读取Person-validation.xml文件并且标记在UI上标记哪个字段时必须的。 AppFuse的Struts和Spring版本使用LabelTag实现了这个目标,不过他们也只是实现了一个普通的校验。我希望有人能够为 WebWork提供相同的功能实现。同时JSP tags "required" 属性实际上没有对你所指定的校验规则作任何事情,仅仅是在加入对应的字段后面加入了一个星号而已。

        当然,也可以使用per-action校验。只需要拷贝Person-validation.xml文件到"webapp.action"包中并且把它重命名为PersonAction-validation.xml。

        为了使在"savePerson" 操作中我们新加入的校验规则发挥作用,我们要把原来在"validator"属性上的注释去掉。确定最后在web/WEB- INF/classes/xwork.xml文件的"savePerson" <action> 部分包含以下内容:

 

1<interceptor-ref name="validationStack"/> 

 

    说明:在Appfuse中使用的validationStack和WebWork自带的有些不同,更多的信息可以在WebWork's JIRA中查找。

 

posted on 2010-07-11 18:46 rogerfan 阅读(363) 评论(0)  编辑  收藏 所属分类: 【开源技术】

只有注册用户登录后才能发表评论。


网站导航: