isValid 中抛出的异常 - 休眠验证器

exception thrown in isValid - hibernate validator

验证我从 application.yml 加载的某些配置时 使用如下自定义验证器:

public class MyValidator implements ConstraintValidator<MyAnnotation, List<MyClass>> {

        @Override
        public void initialize(MyAnnotation myAnnotation) {
            //nothing to do
        }

        @Override
        public boolean isValid(List<MyClass> myList, ConstraintValidatorContext context) {
           // validation logic
        }
    }

如果您的验证逻辑触发异常,例如在空指向的情况下,我注意到其他可能的验证器不会启动,并且会出现一条错误消息,内容类似于 binding error, 显示。

避免这种情况的最佳做法是什么?

因此,Hibernate Validator 验证器的一般最佳实践是它们应将空条目视为有效。

如果您查看我们在 Hibernate Validator 中提供的那些,它们都 return 对于 null 条目为真。这个想法是当你想检查 null 时显式使用 @NotNull

有一些例外,例如 @NotBlank,但这是一般的最佳做法。

显然,如上所述,您的代码需要正确并避免 NPE 或其他异常。但这不言而喻。