在应用自定义约束验证器之前验证类型的字段

Validating fields of a type before applying a custom constraint validator to it

我有一个 class 是这样的

@MyValidator
class Demo {
    @NotNull
    Instant startDate
    ...
}

在 MyValidator 约束的 ConstraintValidator 中,我进行了一个调用,要求 startDate 不为空。

如果 startDate 上的 @NotNull 约束在我的 @MyValidator 约束之前被验证,我不必担心,但在我的测试中,@MyValidator 首先被验证,我得到了一个 NPE。

我如何向调用我的 ConstraintValidator 的验证器指示应在字段级 @NotNull 约束之后验证 @MyValidator 约束,或者我自己显式验证 @NotNull 约束作为我的 ConstraintValidator 实现的第一步?

您可以使用验证组和组序列来控制验证顺序。 信息:如果组序列中定义的组之一失败,组序列将停止验证。

http://beanvalidation.org/1.1/spec/#constraintdeclarationvalidationprocess-groupsequence

如果您使用的是 Hibernate Validator,此 link 也可能有帮助: https://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/chapter-groups.html