Java Spring Boot自定义验证:所有枚举的通用验证



对于SpringBoot项目,我使用自定义注释进行自定义验证。特别是,我有很多枚举,我想验证输入中是否有正确的枚举值(例如,从json到DTO对象(

我正在使用这种方法:我定义了我的注释:

@Target( { FIELD, PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = PlatformValidator.class)
public @interface PlatformValidation {
String message() default "Invalid platform format";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

和我的验证器:

public class PlatformValidator implements ConstraintValidator<PlatformValidation, String>
{
public boolean isValid(String platform, ConstraintValidatorContext cxt) {
try {
if (!isNull(platform)) {
Platform.valueOf(platform);
}
return true;
} catch (Exception ex) {
return false;
}
}
}

我的问题是,我可以有一个通用的枚举验证注释,并指定我需要的枚举作为注释的参数吗?

类似@MyValidation(enum=MyEnum, message= ...)

对于泛型,方法是使用Java反射。所以注释应该是:

@EnumValidation(enum=YourEnum.class, message=...)

关于反思的教程:Jenkov的教程

最新更新