在自定义验证器中访问父属性路径

时间:2019-04-16 09:53:05

标签: java java-ee bean-validation

我正在编写自定义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()
  }
}

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

显然,答案是在.addBeanNode()调用之后的 之后添加一个.addPropertyNode()调用。实际上,这将在属性名称之前 添加父节点名称。请注意,您不能在调用addBeanNode()之前调用addPropertyNode(),因为其背后的构建器不允许这样做。