如果我使用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;
}
}
我验证了它,是否可以确保@DummyClassValidation
仅在@Min
和@Max
之后进行评估?我知道我可以使用Groupings这样做,但我不愿意,如果我没有必要(即,在对象验证之前隐式地对字段验证进行分组以进行验证)。
答案 0 :(得分:2)
每the specification,第3.5节:
对于要验证的给定组,验证例程应用于 给定的bean实例应该执行以下约束 验证没有特别的顺序:
对于所有可到达的字段, 执行所有字段级验证(包括表示的那些) 超类)匹配目标组,除非给定验证 在此验证例程期间已经处理了约束 对于给定的导航路径(参见第3.5.1节)作为前一部分的一部分 小组赛。
对于所有可到达的getter,执行所有getter级别 验证(包括在接口和表达式上表示的验证) 超类)匹配目标组,除非给定验证 在此验证例程期间已经处理了约束 对于给定的导航路径(参见第3.5.1节)作为前一部分的一部分 小组赛。
执行所有类级别验证(包括那些验证) 在接口和超类上表示)匹配目标组 除非已经处理了给定的验证约束 在给定导航路径的验证例程期间(请参阅 第3.5.1节)作为前一组比赛的一部分。
所有可到达的 和cascadable关联,执行所有级联验证(参见 第3.5.1节)包括在接口和表达式上表达的那些 超类(参见第3.4.5节)
简而言之,除非你想找到一个能够保证并坚持下去的实现,否则你不能依赖它。