Bean 验证组 - 正确理解它

2022-09-01 12:12:23

我试图理解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;

我从上面的例子中了解到,如果我传递给验证者,那么只有和for和for才被验证?(标有数字 1、2 和 3)MyClassA@Min@PatternField1@Patternfield3

我是否正确理解了这一点?我没有留下任何没有属性的字段。所以没有默认组。Groups


答案 1

首先,这是javax.validation javadoc

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

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

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

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


答案 2

推荐