如何找到在Javax自定义验证器中应用了注释的目标级别

时间:2018-10-15 06:23:11

标签: java spring validation hibernate-validator

Am为服务调用实现了自定义验证器。作为其一部分,我有以下注释。

@Target({ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {MyAnnotationValidator.class})
public @interface MyAnnotation {

}

我可以将以上注释应用于字段或参数的元素类型。在参数或字段上调用注释将最终出现在我的约束验证器类中。

两种元素类型的验证逻辑相同。但是,如果验证失败,我需要为这两个元素发送不同的消息。

在参数验证失败的情况下,我需要说“参数验证失败”,在其他情况下,我需要说“字段验证失败”。

我有什么方法可以知道验证调用已到达验证器的元素类型。

我拥有的解决方案是发送带有注释的Custom属性,以指示从何处调用它。像这样的东西。

@MyAnnotation("Parameter") or @MyAnnotation("Field").

需要知道是否存在执行此操作的有效方法。如果需要更多信息,请告诉我。

谢谢

1 个答案:

答案 0 :(得分:0)

我可以确认您,目前尚无好的方法。

想知道我们是否应该公开HibernateConstraintValidatorContext中的内容。我会考虑的。