@GroupSequenceProvider和group是一个超集

时间:2014-01-26 12:43:43

标签: java hibernate validation bean-validation hibernate-validator

简单类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;
   }
  1. 在第二种情况下,我添加了@GroupSequenceProvider(PersonGroupSequenceProvider.class)。

  2. 如果isFullCheck = true,则仅使用FullCheck.class。

    为什么延伸不考虑这种情况?

    如果isFullCheck = false,则仅使用PartlyCheck.class。

0 个答案:

没有答案