由于您的
state字段看起来更像枚举,因此我首先建议将
state字段更改为枚举,让Spring MVC绑定该字段并仅使用
@NotNull批注:
public class AgentValidator { @NotNull(message = "your state can not be empty !") private AgenState state;在哪里
AgentState:
public enum AgentState { DOWN,LISTEN,ACTIVE}但是,如果由于某些原因您无法更改模型,则可以使用自定义约束。
特别是您需要创建注释
AgentStateConstraint:
@Target( { METHOD, FIELD, ANNOTATION_TYPE })@Retention(RUNTIME)@Constraint(validatedBy = AgentStateConstraintValidator.class)@documentedpublic @interface AgentStateConstraint { String message() default "Some message"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {};}然后,您需要创建验证器
AgentStateConstraintValidator:
public class AgentStateConstraintValidator implements ConstraintValidator<AgentStateConstraint, String> { //Accepted values private static final Set<String> ACCEPTED_VALUES = new HashSet<String>( Arrays.asList( "DOWN", "LISTEN", "ACTIVE" ) ); public void initialize(AgentStateConstraint constraintAnnotation) { } public boolean isValid(String object, ConstraintValidatorContext constraintContext) { return ACCEPTED_VALUES.contains(object); }}


