【发布时间】:2015-06-12 16:01:44
【问题描述】:
我有多个进程,其中 bean 属性必须具有不同的值。示例:
@Min( value=0, groups=ProcessA.class )
@Min( value=20, groups=ProcessB.class )
private int temperature;
不幸的是 bean 验证 JSR 303 没有设置 @Repeatable 在 javax.validation.constraints.Min 上,所以这种方法不起作用。 我找到了“Min.List”,但没有任何关于如何使用它的文档。相反,Oracle 官方文档在http://docs.oracle.com/javaee/7/api/javax/validation/constraints/class-use/Min.List.html
没有使用 javax.validation.constraints.Min.List
所以现在这看起来像是规范错误?!?
【问题讨论】:
-
文档还说“在同一个元素上定义了几个 Min 注释。”。所以它看起来和你想做的完全一样。你试过使用它吗?有什么困难?
-
javac 抛出编译错误:Duplicate annotation of non-repeatable type @ Min.只有标记为@Repeatable 的注解类型可以在一个目标上多次使用。
-
这就是你使用
@Min两次时的意思,就像你发布的代码一样。这就是为什么您应该改用@Min.List的原因,它被记录为“在同一元素上定义多个 Min 注释。”。当您使用@Min.List时会发生什么? -
有趣的想法。真的。但我没有得到任何正确的语法。编写 @Min( value=0, groups=ProcessA.class ) 会导致:“注释类型 Min.List 的属性组未定义”
-
Min.List 被指定为 Min 自身的内部接口:@interface List { Min[] value(); }
标签: java validation bean-validation