Java约束注解: Passing Parameter Value To Composite Constraint

标签 java validation annotations

我正在尝试创建自己的复合验证注释来验证字符串 - 到目前为止,它由注释 @NotNull、@NotBlank 和 @Size 组成

但是,我不想将这些保留为默认值,并且希望能够传入参数值,例如如果我执行@ValidString(min = 1, max = 50),那么@Size注释可以读取这些值 - 这可能吗?

我的限制 -

@NotNull()
@NotBlank()
@Size()
@Constraint(validatedBy = ValidStringValidator.class)
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
public @interface ValidString {
    String message();
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
    int min() default 1;
    int max() default 255;
}

最佳答案

您可以使用OverridesAttribute

@Size(min=1, max=255)
@Retention(RUNTIME)
@Target({ TYPE, FIELD })
@Constraint(validatedBy={})
public @interface ValidString {
    String message();
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

    @OverridesAttribute(constraint=Size.class, name="min")
    int min() default 1;

    @OverridesAttribute(constraint=Size.class, name="max")      
    int max() default 255;
}

关于Java约束注解: Passing Parameter Value To Composite Constraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18486317/

相关文章:

java - Hibernate:将两列映射到 HashMap 的键和值

java - 如何使用@Inject 注释在Java 中堆叠自定义注释

java - 如何避免 BufferUnderflowException

java - 有没有办法发现 REST API 的所有端点?

java - 我可以简单地使用TreeSet对ArrayList的ArrayList进行排序吗?

AngularJS 验证 ngModel 未定义

java - Java中如何确保返回的对象不会被修改

validation - p :keyFilter not working as expected in Firefox

c# - 00 :00 Time Format > 24 的正则表达式

java - 使用 spring 注解创建对象