简单类Person.class
class Person {
@NotNull(groups = {PartlyCheck.class})
private String name;
@NotNull(groups = {FullCheck.class})
private String adress;
private boolean isFullCheck;
}
检查接口
public interface PartlyCheck{}
public interface FullCheck extends PartlyCheck{}
我使用两种方法:
if(person.isFullCheck) {
validator.validate(person, FullCheck.class);
else {
validator.validate(person, PartlyCheck.class);
}
1
如果isFullCheck = true,则使用两个检查(FullCheck.class和PartlyCheck.class)
如果isFullCheck = false,则仅使用PartlyCheck.class。
这是一种可以理解的行为。
@GroupSequenceProvider(PersonGroupSequenceProvider.class)
@Override
public List<Class<?>> getValidationGroups(Person person) {
List<Class<?>> defaultGroupSequence = new ArrayList<>();
defaultGroupSequence.add(Person.class);
if (person.isFullCheck) {
defaultGroupSequence.add(FullCheck.class);
} else {
defaultGroupSequence.add(PartlyCheck.class);
}
return defaultGroupSequence;
}
在第二种情况下,我添加了@GroupSequenceProvider(PersonGroupSequenceProvider.class)。
如果isFullCheck = true,则仅使用FullCheck.class。
为什么延伸不考虑这种情况?
如果isFullCheck = false,则仅使用PartlyCheck.class。