public class EnumValueValidator implements ConstraintValidator<EnumValue, Object> {
private List<Object> values = new ArrayList<>();
public void initialize(EnumValue constraintAnnotation) {
Class<? extends Enum> clazz = constraintAnnotation.value();
String valueMethod = constraintAnnotation.valueMethod();
try {
Method method = clazz.getMethod(valueMethod);
Enum[] enums = clazz.getEnumConstants();
for (Enum item : enums) {
values.add(method.invoke(item));
}
} catch (Exception e) {
throw new ServiceException(e);
}
}
public boolean isValid(Object value, ConstraintValidatorContext context) {
return values.contains(value);
}
}
(validatedBy = {CheckCertificateValidator.class})
({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
(RUNTIME)
(CheckCertificate.List.class)
public @interface CheckCertificate {
String message() default "参数不合法";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
(RUNTIME)
@interface List {
CheckCertificate[] value();
}
}