【问题标题】:exception thrown in isValid - hibernate validatorisValid 中抛出的异常 - 休眠验证器
【发布时间】:2019-06-20 08:27:13
【问题描述】:

验证一些配置时,我从 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

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

【问题讨论】:

  • 修复代码使其不会抛出 NullPointerException。

标签: java spring-boot validation hibernate-validator


【解决方案1】:

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

如果您检查我们在 Hibernate Validator 中提供的那些,它们都会为空条目返回 true。这个想法是在您想要检查 null 时显式使用@NotNull

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多