【问题标题】:Spring Validation Annotations OrderSpring Validation 注解顺序
【发布时间】:2010-07-19 08:40:57
【问题描述】:

我想问是否可以在 Spring 中明确设置验证顺序。我的意思是,我有这个命令对象:

public class UserData {
 @NotBlank
 private String newPassword;

 @NotBlank
 private String confirmPassword;

 @Email(applyIf="email is not blank")
 @NotBlank
 private String email;

 @NotBlank
 private String firstName = "";

 private String middleName = "";

 @NotBlank
 private String lastName = "";

        // getters/setters
}

然后我在页面顶部显示我的错误消息,如下所示:

<spring:hasBindErrors name="${userData}">
   <ul class="errors">
      <c:forEach items="${errors.allErrors}" var="error">
       <li><spring:message message="${error}"/></li>
   </c:forEach>
  </ul>
</spring:hasBindErrors>

问题在于我的错误信息按以下顺序显示:

* Fill you last name.
* Fill you password.
* Fill your emailaddress.
* Fill you password again.
* Select your gender.
* Fill your first name.

这不是随机的,因为这个顺序每次都会保留。它不是字母顺序或任何其他顺序......我真的被卡住了。有人可以帮忙吗?

【问题讨论】:

  • 这可能不是 Spring 负责的,它可能是底层验证实现,例如休眠验证器。
  • 我们正在使用版本。 java.net 上托管的 Spring 基于注解的 bean 验证框架的 0.93
  • 那是哪一个? java.net 是一个很大的地方...
  • springmodules.dev.java.net 具体的验证模块。

标签: java spring validation annotations


【解决方案1】:

SpringModules 是一个死项目,不再受支持。如果您需要 Spring 中的 JSR-303 验证支持,我建议使用参考实现 Hibernate Validatorwire it up like so

话虽如此,这可能无法解决您的问题,但至少您将使用最新的库,可能更容易解决。

【讨论】:

  • 我知道这篇文章已经过时了,但我在使用带有休眠验证器 5.0.1 的 Spring 4 时遇到了这个问题。还没找到解决办法。
【解决方案2】:

我发现使用 @GroupSequence 是可行的,但感觉不是一个合适的解决方案。

有关快速教程,请参阅 http://www.jroller.com/eyallupu/entry/jsr_303_beans_validation_using

【讨论】:

    猜你喜欢
    • 2020-02-29
    • 2020-04-27
    • 1970-01-01
    • 2019-10-20
    • 2014-08-02
    • 2016-10-05
    • 2016-02-01
    • 1970-01-01
    • 2012-04-05
    相关资源
    最近更新 更多