30

我正在尝试了解 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@PatternforField1@Patternforfield3才被验证?(标有数字 1,2 和 3)

我理解正确吗?我没有留下任何没有Groups属性的字段。所以没有默认组。

4

1 回答 1

27

首先,这里是javax.validation javadoc

当你想验证一个 bean 时,你实际上调用了Validator.validate(T object, java.lang.Class... groups)

然后它将检查指定组的验证约束。它允许使用多个验证案例。

您在问题中描述的内容是准确的。

请注意,如果您没有在约束上放置任何组,则约束属于默认组,如果您在调用 validate(T object) 时未指定任何组,则默认组是唯一经过验证的组。

于 2013-07-04T17:50:09.147 回答