[英]Validate field with @Enumerated annotation
我需要使用@Valid批注验证实体。 我实体的一个字段可以采用一组数值,我想使用@Enumerated批注。 它可能取值为5、10、15、20和30.我可以使用该注释来处理它吗? 怎么样?
谢谢!
更新
我通过以下方式解决了我的问题:
我创建了一个注释@ValidateIntegerSet
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.FIELD,ElementType.CONSTRUCTOR,ElementType.PARAMETER,ElementType.ANNOTATION_TYPE})
@Constraint(validatedBy=IntegerSet.class)
public @interface ValidateIntegerSet {
int[] acceptedValues();
String message() default "Il valore inserito non è tra quelli ammissibili";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
我创建了一个IntegerSet类来执行验证
public class IntegerSet implements ConstraintValidator<ValidateIntegerSet, Integer> {
private List<Integer> valueList;
@Override
public void initialize(ValidateIntegerSet constraintAnnotation) {
valueList = new ArrayList<Integer>();
for(int val : constraintAnnotation.acceptedValues()) {
valueList.add(Integer.valueOf(val));
}
}
@Override
public boolean isValid(Integer value, ConstraintValidatorContext context) {
if(!valueList.contains(value)) {
return false;
}
return true;
}
}
我已经通过以下方式使用了新的注释:
@ValidateIntegerSet(acceptedValues={5, 10, 15, 20, 30})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.