javax.validation to validate list of values? javax.validation to validate list of values? spring spring

javax.validation to validate list of values?


In that case I think it would be simpler to use the @Pattern annotation, like the snippet below. If you want a case insensitive evaluation, just add the appropriate flag:

@Pattern(regexp = "red|blue|green|pink", flags = Pattern.Flag.CASE_INSENSITIVE)


You can create a custom validation annotation. I will write it here (untested code!):

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })@Retention(RUNTIME)@Documented@Constraint(validatedBy = InConstraintValidator.class)public @interface In{    String message() default "YOURPACKAGE.In.message}";    Class<?>[] groups() default { };    Class<? extends Payload>[] payload() default {};    Object[] values(); // TODO not sure if this is possible, might be restricted to String[]}public class InConstraintValidator implements ConstraintValidator<In, String>{    private Object[] values;    public final void initialize(final In annotation)    {        values = annotation.values();    }    public final boolean isValid(final String value, final ConstraintValidatorContext context)    {        if (value == null)        {            return true;        }        return ...; // check if value is in this.values    }}


you can create an enum

public enum Colors {    RED, PINK, YELLOW}

and then in your model, you can validate it like so:

public class Model {    @Enumerated(EnumType.STRING)    private Colors color;}

which will validate your payload against the enum, given that you have added @Valid in your RestController.