netshuai

导航

struts2校验框架之Visitor校验器

Visitor校验器主要用于检测Action里的复合属性,如一个Action里面包含了User类型的属性。
假设User类包含了username和password属性,为了验证Action里User类的username和password属性输入值是否有效,就可以使用Visitor校验器。
通常情况下可以使用[action名]+[-方法名(是struts.xml配置中的别名)]+validation.xml来校验;如此例需要验证User类,则需要添加一个User-[上下文名]-validation.xml来配置,且User-[上下文名]-validation.xml文件必须与User类在同一个包中。

若Action名为AddUserAction,则校验文件名为AddUserAction-validation.xml,内容如下
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
>

<validators>
         
<!-- 校验的Action中的user类 -->
    
<field name="user">
        
<field-validator type="visitor">
                       
<!-- 指定校验规则文件的context名为add,此名可任意取 -->
            
<param name="context">add</param>
        
<!-- 指定校验失败后提示信息是否添加下面前缀,如果设置为false,则在标签对应的地方不显示错误,需要用fielderrors来显示 -->
            
<param name="appendPrefix">true</param>
                         
<!-- 指定校验失败的提示信息前缀 -->
            
<message>错误:</message>
        
</field-validator>
    
</field>

</validators>

然后在User类所在包建立名为User-add-validation.xml(add为上面<param name="context">add</param>中定议),内容如下
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
>

<validators>

    
<field name="username">
        
<field-validator type="requiredstring">
            
<message>用户名不能为空</message>
        
</field-validator>
    
</field>
    
<field name="password">
        
<field-validator type="requiredstring">
            
<message>密码不能为空</message>
        
</field-validator>
    
</field>

</validators>

经过以上设置,即可对action中的user进行验证了!
另:可以定义User-validation.xml来验证公共属性,定义了Visitor校验器后,会自动检查User-validation.xml中的公共规则,如Visitor诉求验器中只写message属性,则只进行公共属性验证。

posted on 2009-08-05 20:03  netshuai  阅读(2872)  评论(0编辑  收藏  举报