【发布时间】:2018-02-21 23:38:50
【问题描述】:
我创建了一个自定义注解,其中 @Size.List 对不同的组具有不同的约束。
当使用 this 验证变量时,它使用两个约束而不是所选组的约束。
但是非分组注释正常工作 代码示例:
@Size.List({
@Size(max = 1, groups = Group1.class),
@Size(max = 2, groups = Group2.class) })�@OtherAnnotationsThatWork
public @interface FooAnnotation {
String message() default “Bar”;
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default{};
}
public Class Bar{
public Bar(String foo){ Foo = foo; }
//doesn’t work
@FooAnnotation
private Foo;
//getters and setters
}
@Test
Private barTest(){
Bar bar1 = new Bar(“a”);
Validate(bar1, group1.class);
Bar bar2 = new Bar(“bb”);
//fails because size is greater than max of 1
Validate(bar2, group2.class)
}
我也知道这不是由@Size.List 或我的组设置不正确引起的,因为以下代码有效。
@OtherAnnotationsThatWork
public @interface FooAnnotation {
String message() default “Bar”
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default{};
}
public Class Bar{
public Bar(String foo){ Foo = foo; }
@Size.List({
@Size(max = 1, groups = Group1.class),
@Size(max = 2, groups = Group2.class) })
@FooAnnotation
private Foo;
//getters and setters
}
@Test
Private barTest(){
Bar bar1 = new Bar(“a”);
Validate(bar1, group1.class);
Bar bar2 = new Bar(“bb”);
Validate(bar2, group2.class) //passes
}
所以问题是。如何使组在自定义注释中工作。
【问题讨论】:
标签: java annotations constraints bean-validation hibernate-validator