【问题标题】:bean validation jsr349 @Min.List , how does this work?bean 验证 jsr349 @Min.List ,这是如何工作的?
【发布时间】:2018-09-28 09:27:10
【问题描述】:

我正在开发一个自定义 Validation Annotation ,并且注释需要是可重复的。

"Min.List"可以满足需求,我自己的注解也做了同样的事情。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = ComboValidator.class)
public @interface Combo {
    String dependField();
    String controlledField();
    Class<? extends Releation> relation() default BaseReleation.class;

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


    /**
     * Defines several {@link Combo} annotations on the same element.
     *
     * @see Combo
     */
    @Target({ ElementType.TYPE })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @interface List {
        Combo[] value();
    }
}

有效。

在我看来,验证器将为需要验证的不同类型创建不同的实例。所以在验证器中,我可以从注释中获取数据并将其存储在类型级别的字段中。但是在可重复注释的情况下,我注意到创建了多个实例。

所以我的问题是@interface 列表的含义和工作原理是什么?

【问题讨论】:

  • 我对用法做了一些研究,但一无所获。如果您可以发布有关使用情况的信息,这也很有帮助。谢谢

标签: java jsr349


【解决方案1】:

您观察到的行为在Bean Validation Spec 中定义:

[...] Bean Validation 提供程序处理常规注解 [...],其值元素以特殊方式具有约束注解数组的返回类型。 value 数组中的每个元素都由 Bean Validation 实现处理为常规约束注释。

这是在 Java 8 之前支持“重复注释”的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    相关资源
    最近更新 更多