2010-07-19 117 views
4

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

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. 

这不是随机的,因为这个顺序被保存每 时间。它不是按字母顺序排列的,或者其他任何顺序......我真的被卡住了。有人可以帮忙吗?

+0

它可能不是Spring对此负责,它可能是底层的验证实现,例如,休眠验证器。 – skaffman 2010-07-19 08:42:03

+0

我们正在使用ver。在java.net上托管的基于Spring注释的bean验证框架的0.93 – 2010-07-19 08:46:18

+0

哪一个是? java.net是一个大的地方... – skaffman 2010-07-19 08:52:21

回答

3

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

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

+0

我知道这篇文章是旧的,但我遇到了这个问题,使用Spring 4 w/hibernate validator 5.0.1。还没有找到解决方案。 – 2014-04-11 19:57:19