2013-07-04 80 views
13

我想了解Bean驗證中的組。Bean驗證組 - 正確理解

因此,例如,如果我有一個bean,我只想要某些字段驗證某些情況下,我應該將它們分組?

@NotNull (groups=MyClassX.class) 
@Min (groups=MyClassA.class) // 1 
@Pattern(xxxxx, groups = MyClassA.class) // 2 
private String field1; 

@NotNull (groups=MyClassX.class) 
@Min (groups=MyClassX.class) 
@Pattern(xxxxx, groups=MyClassX.class)) 
private String field2; 

@NotNull (groups=MyClassX.class) 
@Min (groups=MyClassX.class) 
@Pattern(xxxxx, groups=MyClassA.class) //3 
private String field3; 

我從上面的例子理解是,如果我通過MyClassA來驗證,那麼只有@Min@PatternField1@Patternfield3只驗證? (用數字1,2和3標記)

我理解正確嗎? 我沒有離開任何字段沒有Groups屬性。所以沒有默認組。

回答

14

首先,這裏是javax.validation javadoc

如果您想驗證一個bean,你居然叫Validator.validate(T object, java.lang.Class... groups)

它會檢查指定組的驗證限制。它允許使用多個驗證案例。

你在你的問題中描述的是準確的。

注意,如果您沒有在約束上放置任何組,那麼這些約束屬於默認組,如果在調用validate(T對象)時沒有指定任何組,則這是唯一的驗證組。