我正在寻求为与@Size
注释类似的注释实现JPA Bean验证程序,以便允许在注释上使用参数min
和max
。我一直在浏览文档和各种示例,但是找不到允许在Annotation上使用多个参数的实现。
目前我的代码看起来像这样
@Target({ FIELD, METHOD, PARAMETER, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = CapacityImpl.class)
public @interface Capacity {
String message() default "Capacity not in valid Range";
// Required by validation runtime
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
最终注释应如下所示:
@Capacity(min=19, max=40)
public class CapacityImpl implements ConstraintValidator<Capacity, Integer> {
@Override
public void initialize(Capacity capacity) {
}
@Override
public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {
return false;
}
}
所以我的问题是我该如何更改此接口和类以实际允许Annotation上的参数min和max,以便随后可以使用这些参数值来验证字段的值
最佳答案
只需将它们添加到您的注释定义中即可:
public @interface Capacity {
String message() default "Capacity not in valid Range";
// Required by validation runtime
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
int min();
int max();
}