要解决Bean Validation Groups - 验证内部类的问题,可以按照以下步骤进行操作:
public class OuterClass {
@NotEmpty(groups = Group1.class)
private String field1;
@Min(value = 18, groups = Group2.class)
private int field2;
public class Group1 { }
public class Group2 { }
// 省略其他代码
}
public interface Group1 { }
public interface Group2 { }
Validator
类进行验证,使用validate
方法的第二个参数指定要验证的分组。import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
public class Main {
public static void main(String[] args) {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
OuterClass outerObj = new OuterClass();
// 验证Group1
Set> violationsGroup1 = validator.validate(outerObj, Group1.class);
for (ConstraintViolation violation : violationsGroup1) {
System.out.println(violation.getMessage());
}
// 验证Group2
Set> violationsGroup2 = validator.validate(outerObj, Group2.class);
for (ConstraintViolation violation : violationsGroup2) {
System.out.println(violation.getMessage());
}
}
}
这样就可以根据不同的分组对内部类进行验证了。在这个例子中,field1
将仅在Group1
中进行验证,而field2
将仅在Group2
中进行验证。