访问自定义验证程序中的父属性路径

问题描述 投票:1回答:1

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

任何帮助,将不胜感激。

java java-ee bean-validation
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.