java - 如何在 javax 自定义 validator 中查找应用注释的目标级别

标签 java spring validation hibernate-validator

正在为服务调用实现自定义 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/

相关文章:

java - 如何处理 Spring MVC 中的验证和严重错误

java - 将 uint32_t 从 C++ 发送到 Java

java - spring-mvc错误: Neither BindingResult nor plain target object for bean name 'userBean' available as request attribute

java - Spring 验证 - NULL 或有效的 url

Spring 表单和 UTF-8 错误编码

java - 如何使用 spring 将对象从 jsp 传递到 Controller

forms - 未显示隐藏字段的 symfony 表单验证消息

java - 使用 API KEY 从 google plus 检索 Activity 无效

java - 在 Google App Engine 中看不到我的自定义日志

java - 两个相同的字符串不相等(不是指针/引用错误)