Struts 2在操作中手动调用自定义验证

时间:2015-04-13 11:11:51

标签: validation struts2

我们使用Struts 2验证和大量自定义验证来验证表单。

@Validations( 
    customValidators =      
           { @CustomValidator(type = "AccountFormat", fieldName = "accountNo") }
)

我们也可以通过覆盖验证方法来手动验证表单

public void validate() {
    //Username can't be blank
    if(username.equals("")) {
        addFieldError("username", "The Username can't be empty");
    }

是否可以拨打custom validations中的validate()

为什么我们需要它?! 所有验证规则都包含在自定义验证中,这是完美的。有一些形式需要自己的手动验证。我们最终还是在这些手动验证表单中剪切并粘贴了一些自定义验证规则,如果我们可以在此处调用验证,那将是最好的

1 个答案:

答案 0 :(得分:3)

当然,您可以创建自定义验证器的实例,设置必需的属性(字段名称,值堆栈,...)并调用validate方法......

但这不是处理此类案件的最佳方式。如果您需要验证操作上下文之外的值(例如在某些Web服务中),您将要做什么?

更好的解决方案是将验证逻辑从自定义验证器拉到某个单独的类,您可以从代码中的任何位置调用它,并将Struts2自定义验证器编写为调用该类的包装器。