web-dev-qa-db-ja.com

Bean検証グループ-正しく理解する

Groups in 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および@Pattern ために Field1および@Pattern ために field3は検証されるだけですか? (番号1、2、3が付いています)

私はこれを正しく理解しましたか? Groups属性のないフィールドはありません。したがって、デフォルトグループはありません。

25
Kevin Rave

まず、これが javax.validation javadoc です。

Beanを検証する場合、実際には Validator.validate(Tオブジェクト、Java.lang.Class ... groups) を呼び出します

次に、指定されたグループの検証制約をチェックします。複数の検証ケースを使用できます。

質問であなたが述べたことは正確です。

制約にグループを設定しない場合、制約はデフォルトグループに属します。これは、validate(Tオブジェクト)を呼び出すときにグループを指定しない場合、検証される唯一のグループです。

22