Cannot find validator for type: Enum

I get an exception for checking Enumaration:

WARN org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver: 186 - Execution of the handler threw an exception: HV000030: for type: no validator was found for enumeration: enum.YesNo

All classes are below:

public enum YesNo { YES("Yes"), NO("No"); private String value; YesNo(final String value) { this.value = value; } } public class Bean { @NotNull @EnumValidator(enumClazz = YesNo.class) private YesNo yesno; } @Documented @Constraint(validatedBy = EnumValueValidator.class) @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface EnumValidator { Class<? extends Enum<?>>enumClazz(); String message() default "Value is not valid"; Class<?>[]groups() default {}; Class<? extends Payload>[]payload() default {}; } public class EnumValueValidator implements ConstraintValidator<EnumValidator, String> { List<String> valueList = null; @Override public boolean isValid(final String value, final ConstraintValidatorContext context) { if (!valueList.contains(value.toUpperCase())) { return false; } return true; } @Override public void initialize(final EnumValidator constraintAnnotation) { valueList = new ArrayList<String>(); Class<? extends Enum<?>> enumClass = constraintAnnotation.enumClazz(); @SuppressWarnings("rawtypes") Enum[] enumValArr = enumClass.getEnumConstants(); for (@SuppressWarnings("rawtypes") Enum enumVal : enumValArr) { valueList.add(enumVal.toString().toUpperCase()); } } } 
+5
source share

Source: https://habr.com/ru/post/1236116/


All Articles