2013-07-04 18 views
13

Próbuję zrozumieć walidację grup w komórce.Grupy walidacji fasoli - zrozumienie tego poprawnie

Na przykład, jeśli mam fasolę i chcę tylko pewne pole sprawdzone w niektórych przypadkach, powinienem je pogrupować?

@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; 

Moje zrozumienie z powyższego przykładu jest, jeśli mijam MyClassA do walidatora, a następnie tylko @Min i @Pattern dla Field1 i @Pattern dla field3 tylko są sprawdzane? (oznaczone numerami 1,2 i 3)

Czy rozumiem to poprawnie? Nie zostawiłem żadnych pól bez atrybutu Groups. Więc nie ma domyślnej grupy.

Odpowiedz

14

pierwsze, tutaj jest javax.validation javadoc

Kiedy chcesz potwierdzić fasoli, właściwie nazwać Validator.validate(T object, java.lang.Class... groups)

Będzie on następnie sprawdzić ograniczenia walidacji z wymienionych grup. Pozwala korzystać z kilku przypadków sprawdzania poprawności.

To, co opisujesz w swoim pytaniu, jest dokładne.

Uwaga, jeśli nie umieścisz żadnej grupy na swoich ograniczeniach, wówczas wiązania należą do domyślnej grupy, która jest jedyną zweryfikowaną grupą, jeśli nie określisz żadnej grupy podczas wywoływania sprawdzania poprawności (obiekt T).