【发布时间】:2014-02-20 09:56:04
【问题描述】:
我使用ConstraintValidator.ContextConstraintViolationBuilder 的addNode() 方法将错误消息添加到自定义路径中,但该方法已被弃用。但是,当我使用新方法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