我正在写一个自定义的javax.validation.ConstraintValidator
。我想在我的ConstraintViolation
上包含一个自定义属性路径,包括父属性路径。所以:
class BaseClass {
@Valid MyProperty first;
}
@MyValidator class MyProperty {
String someField;
}
class MyValidatorImpl implements ConstraintValidator<MyValidator, MyProperty> {
// ...
public boolean isValid(MyProperty value, ConstraintValidatorContext context) {
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate("My message")
// How to access the parent property name "first" here?
.addPropertyNode("my custom property")
.addConstraintViolation()
}
}
任何帮助,将不胜感激。
显然,答案是在.addBeanNode()
电话后添加一个.addPropertyNode()
电话。这实际上会在属性名称之前添加父节点名称。请注意,在调用addBeanNode()
之前不能调用addPropertyNode()
,因为它后面的构建器不允许这样做。