如何在Struts 2中正确验证字段

时间:2014-07-30 00:35:58

标签: java validation struts2

我想知道我在这里做错了什么:

<validators>
    <field name="cli.idCli" >
        <field-validator type="requiredString" short-circuit="true">
            <message>Required field (*)</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">8</param>
             <param name="maxLength">8</param>
             <message>ID must has 8 characters</message>
        </field-validator>
    </field>
</validators>

因为,实际上我收到了这个错误:

  

ERROR   com.opensymphony.xwork2.validator.AnnotationActionValidatorManager   加载文件时捕获异常   ... / action / ServiceAction-findPets-validation.xml验证无效   type:requiredString - field-validator

另外,我想知道如果进行ajax调用(并发送JSON数据)我可以验证这些数据的存在吗?我的意思是通过.xml验证器。此外,如果我实现Validateable接口,每次请求到达此操作时,此方法将被触发?有没有办法指定哪种动作方法呢?

2 个答案:

答案 0 :(得分:0)

名称区分大小写,您应该使用

<field-validator type="requiredstring" short-circuit="true">

数据可以在填充到操作后进行验证。您可以使用*-validation.xml声明式方式执行此操作,也可以通过validate()使用以编程方式执行此操作。

您可以配置validation拦截器以在这两种方式之间进行选择,因为默认情况下validate()在声明性验证完成后运行,即使它们是短路的。

考虑使用alwaysInvokeValidate参数。如果您将别名验证文件用作ActionClass-alias-validation.xml,则仅对此操作别名运行验证。映射操作方法时,可以使用此别名。

答案 1 :(得分:0)

如果您想跳过任何操作方法的验证,请使用@SkipValidation注释。

@SkipValidation
public String yourMethod {
    ...         
    return "input";
}