我需要使用@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})