我需要使用javax。valitation为整数字段创建验证器。该整数字段必须是所提供的值列表中的值(i.即5、10或15)以通过验证。
特别是,我的领域是:
@IntegerValueAmong({5, 10, 15})
private Integer myNumber;
IntegerValueAmong注解定义为:
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = IntegerValueAmongValidator.class)
public @interface IntegerValueAmong {
String message() default "Value must an integer value among";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
int[] value() default {};
}
我尝试做的IntegerValueAmongValidator是:
public class IntegerValueAmongValidator implements ConstraintValidator<IntegerValueAmong, Integer> {
@Override
public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {
return integer == 5 || integer == 10 || integer == 15;
}
}
但我不想有5,10和15作为硬编码值,我想访问传递到字段上的IntegerValueAmong注解的数组。
1条答案
按热度按时间dpiehjr41#
您提出这个问题的事实表明您在阅读文档时没有付出太多的努力。如果你会,你会注意到
initialize
方法。此方法在调用isValid
之前被调用,并接收当前注解。这样,您就可以为特定的注解配置验证器。