【问题标题】:Hibernate Custom Validator - addPropertyNode() Abstract Method ExceptionHibernate 自定义验证器 - addPropertyNode() 抽象方法异常
【发布时间】:2014-02-20 09:56:04
【问题描述】:

我使用ConstraintValidator.ContextConstraintViolationBuilderaddNode() 方法将错误消息添加到自定义路径中,但该方法已被弃用。但是,当我使用新方法addPropertyNode 时,我得到了AbstractMethodError

我是否缺少某些依赖项?

下面是错误信息的sn-p:

java.lang.AbstractMethodError: 
    org.hibernate.validator.internal.engine.ConstraintValidatorContextImpl$ErrorBuilderImpl
       .addPropertyNode(Ljava/lang/String;)
          Ljavax/validation/ConstraintValidatorContext$ConstraintViolationBuilder
             $NodeBuilderCustomizableContext;

下面是使用 Hibernate Validator 版本 4.3.1-Final 进行跨字段验证的验证器的 sn-p

import org.springframework.beans.*;
...

    private String first;
    private String second;

    public boolean isValid(Object value, ConstraintValidatorContext context) {
        BeanWrapper beanWrapper = new BeanWrapperImpl(value);
        Object fieldObj = beanWrapper.getPropertyValue(first);
        Object verifyObj = beanWrapper.getPropertyValue(second);

        if (fieldObj.equals(verifyObj)) {
            return true;
        }
        else {
            context.disableDefaultConstraintViolation();
            context.buildConstraintViolationWithTemplate("message")
                .addPropertyNode(fieldObj).addConstraintViolation();

            // ~ Depreciated, but works correctly~
            // context.buildConstraintViolationWithTemplate("message")
            //    .addNode(fieldObj).addConstraintViolation();

            return true;
        }
    }

【问题讨论】:

    标签: java hibernate validation bean-validation


    【解决方案1】:

    方法 addPropertyNode() 已添加到 Bean Validation 1.1 API 中。当您使用 BV 1.1 API 时,您似乎使用的是仅实现 Bean Validation 1.0 的早期版本的 Hibernate Validator (4.x)。您应该确保使用 Hibernate Validator 5.x,它是 Bean Validation 1.1 的参考实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多