Я использовал метод addNode()
ConstraintValidator.ContextConstraintViolationBuilder
, чтобы добавить сообщение об ошибке в настраиваемый путь, но этот метод устарел. Однако, я использую новый метод addPropertyNode
.Hibernate Custom Validator - addPropertyNode() Абстрактное исключение метода
Есть ли какая-то зависимость, которую мне не хватает?
Ниже приведен фрагмент сообщения об ошибке:
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
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;
}
}