JSR-303类型的java字段验证是否总是/隐式地在字段验证之前运行?
如果我使用JSR-303类型的java字段验证是否总是/隐式地在字段验证之前运行?,java,validation,object,field,bean-validation,Java,Validation,Object,Field,Bean Validation,如果我使用javax.validation.Validator验证带有约束的对象,它是否总是在对象之前评估字段级约束 例如,如果我有: @DummyClassValidation public static class DummyClassToValidate { private Integer myNum; @Min(value = 50) @Max(value = 100) public Integer getMyNum() { retur
javax.validation.Validator
验证带有约束的对象,它是否总是在对象之前评估字段级约束
例如,如果我有:
@DummyClassValidation
public static class DummyClassToValidate {
private Integer myNum;
@Min(value = 50)
@Max(value = 100)
public Integer getMyNum() {
return myNum;
}
public void setMyNum(Integer myNum) {
this.myNum = myNum;
}
}
我验证它,是否保证只有在@Min
和@Max
之后才会对@DummyClassValidation
进行评估?我知道我可以使用分组进行验证,但如果我不必这样做的话,我宁愿不这样做(即,字段验证隐式分组以在对象验证之前进行验证)。根据第3.5节:
对于要验证的给定组,验证例程应用于
给定的bean实例应执行以下约束
无特定顺序的验证:
- 对于所有可访问字段, 执行所有字段级验证(包括在 超类)匹配目标组,除非给定验证 此验证例程期间已处理约束 对于给定的导航路径(见第3.5.1节),作为前一条导航路径的一部分 小组赛
- 对于所有可访问的getter,执行所有getter级别 验证(包括在接口和 超类)匹配目标组,除非给定验证 此验证例程期间已处理约束 对于给定的导航路径(见第3.5.1节),作为前一条导航路径的一部分 小组赛
- 执行所有类级验证(包括 在接口和超类上表示)匹配目标组 除非已处理给定的验证约束 在此验证过程中,对给定导航路径执行例行程序(请参阅 第3.5.1)节)作为前一组比赛的一部分
- 对于所有可到达的 和级联关联,执行所有级联验证(请参阅 第3.5.1)节),包括接口和 超类(见第3.4.5节)
简而言之,除非你想找到一个能保证它的实现并坚持下去,否则你不能依赖它。也许值得注意的是,有些实现“忽略”了这个规范: