【问题标题】:Struts 2 manually call a custom validation in an actionStruts 2 在动作中手动调用自定义验证
【发布时间】:2015-04-13 11:11:51
【问题描述】:

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

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

我们也可以通过重写 validate 方法来手动验证表单

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

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

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

【问题讨论】:

  • 您可以尝试,如果不起作用,请返回此处并提出有效问题,就其所写的而言,此问题是题外话。
  • 我当然试过,但根本找不到任何解决方案。
  • 您到底遇到了什么麻烦?创建自定义验证器的实例,设置属性并调用它的 validate 方法。
  • @RomanC @AleksandrM 我希望我可以使用 Struts API 和我过去通过注释配置的仅路径参数更轻松地做到这一点,例如:FieldValidatorSupport validator= SomeFactory.getValidator("AccountFormat");,然后是 validator.setFieldName("accountNo");,最后是 @ 987654328@可以吗?!
  • 代替SomeFactory.getValidator调用new YourCustomValidator(),设置字段名称并调用validate。够容易吗? :)

标签: validation struts2


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多