2016-04-03 60 views
0

我正在研究java spring mvc應用程序。我有一個模型,我在一個字段的頂部設置了兩個驗證註釋。下面是一個代碼示例:java - spring validtion - 在第一次驗證失敗時在字段上放棄其他驗證

public class MyModel{ 

    @NotBlank(message = "This field can not be blank") 
    @NationalCode(message = "Invalid national code") 
    private String name; 

    .... 

} 

當我離開name空並提交表單,錯誤校驗陣列有兩個成員:

name => This field can not be blank 
name => Invalid national code 

不過,我不希望第二線做。事實上,我想當一個領域的第一次驗證失敗,該領域的所有其他驗證停止執行。我該怎麼做?

回答

0

這裏缺少的是Bean Validation specification提供的分組功能。您需要定義邏輯組,以便僅顯示屬於給定組的註釋生成的任何錯誤消息。有關更多信息,請參閱section 4.4.2. Group sequence

簡而言之定義自己的標記接口,例如,NotBlankGroup該接口類添加到您的@NotBlank註釋,

@NotBlank(message = "This field can not be blank", groups = NotBlankGroup.class) 

,這樣你就只能在@NotBlank得到消息時name場值是空的。

而且以後如果要添加@NationalCode或其他自定義或預定義的註解,你可以很容易地groups,使它們都將作爲一個組進行評估添加NotBlankGroup到其他註釋。