定义一个校验器:
package com.shop.common.valid; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import java.util.HashSet; import java.util.Set; public class ListValueConstraintValidator implements ConstraintValidator{ private Set set = new HashSet<>(); // 初始化方法 @Override public void initialize(ListValue constraintAnnotation) { int[] values = constraintAnnotation.value(); if (values!=null){ for (int value : values) { set.add(value); } } } // 判断是否校验成功 @Override public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) { return set.contains(integer); } }
定义检验注解
package com.shop.common.valid;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
@documented
@Constraint(validatedBy = {ListValueConstraintValidator.class}) // 指定校验器,可以指定多个检验器安全屋
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ListValue {
String message() default "{com.shop.common.valid.ListValue.message}";
Class>[] groups() default {};
Class extends Payload>[] payload() default {};
int[] value() default {};
}
编写配置文件ValidationMessages.properties:
com.shop.common.valid.ListValue.message=必须提交指定的值
*实体类字段上添加注解:



