annotations - Annotation 中的多个验证选项

标签 annotations bean-validation hibernate-validator

我的问题是 this one. 的一个分支

我有一个要验证的注释(比如电话注释)。我可以使用@phone 验证器来检查电话对象是否有效。我还希望能够将此验证器放在包含电话的联系信息对象上。有没有一种方法可以对一个注释使用多个验证器,这样我就可以将@phone 用于我的电话对象和我的联系信息对象?

会不会像
@Constraint(validatedBy = {PhoneIsValid.class, PhoneIsValid2.class})
有效吗? (想法是一个验证器处理电话对象,另一个处理联系信息对象。)

最佳答案

同一注解类型可以有多个验证器。 正如您提到的,您已经在 @Constraint 注释中定义了所有这些。

注释:

@Documented
@Target({ ElementType.ANNOTATION_TYPE, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = { ValidPhonePhoneValidator.class, ValidPhoneContactValidator.class })
public @interface ValidPhone {

  String message() default "";
  Class<?>[] groups() default { };
  Class<? extends Payload>[] payload() default { };
} 

验证器 1:

public class ValidPhonePhoneValidator implements ConstraintValidator<ValidPhone, Phone> { ... }

验证器 2:

public class ValidPhoneContactValidator implements ConstraintValidator<ValidPhone, Contact> { ... }

关于annotations - Annotation 中的多个验证选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405765/

相关文章:

java - 无法运行 Java 验证 (JSR 303)

java - Bean Validation Groups - 正确理解

java - 使用反射获取构造函数(或方法)参数注释

java - Spring MVC中的多个@PathVariable

java - 在 Java 运行时确定 AWS lambda 名称

java - Spring 错误 - java.lang.NoSuchMethodError : > org. springframework.beans.factory.annotation.InjectionMetadata.<init>

java - 使用 Hibernate Validator 验证 POJO,无需 JavaBean 约定

Spring 验证 : can't convert from String to Date

java - 使用 hibernate-validator 时出现 NoClassDefFoundError

spring - 如何通过 spring boot 和 ejb 集成修复 hibernate validator 问题