2010-07-19 53 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