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

Struts 2 manually call a custom validation in an action

我们使用 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");
    }

是否可以在validate()中调用custom validations

为什么我们需要它?! 所有验证规则都打包在自定义验证中,非常完美。有一些表格需要有自己的手动验证。我们最终也在这些手动验证表单中剪切和粘贴了一些自定义验证规则,如果我们可以在这里调用验证就更好了

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

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

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