正在为服务调用实现自定义 validator 。作为它的一部分,我有一个下面的注释。
@Target({ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {MyAnnotationValidator.class})
public @interface MyAnnotation {
}
我可以将上述注释应用于字段或参数的元素类型。在参数或字段处调用注释将最终出现在我的约束 validator 类中。
两种元素类型的验证逻辑相同。但是,如果验证失败,我需要为这两个元素发送不同的消息。
如果参数验证失败,我需要说“参数验证失败”,否则我需要说“字段验证失败”。
有什么方法可以让我知道验证调用已从哪种元素类型到达 validator 。
我的解决方案是发送一个带有注释的自定义属性,以指示从何处调用它。像这样的事情。
@MyAnnotation("Parameter") or @MyAnnotation("Field").
需要知道是否有有效的方法来执行此操作。如果需要更多信息,请告诉我。
谢谢
最佳答案
我可以向您确认,目前没有好的方法可以做到这一点。
想知道我们是否应该在 Hibernate ConstraintValidatorContext
中公开一些内容。我会考虑一下。
关于java - 如何在 javax 自定义 validator 中查找应用注释的目标级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52810778/