参考参考分组校验
1、编写一个自定义的校验注解
@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.liang.common.valid.ListValue.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
int[] values() default {};
}
2、编写一个自定义的校验器
public class ListValueConstraintValidator implements ConstraintValidator<ListValue,Integer> {
private Set<Integer> set =new HashSet<>();
//初始u话方法
@Override
public void initialize(ListValue constraintAnnotation) {
int[] values = constraintAnnotation.values();
for (int value : values) {
set.add(value);
}
}
//判断是否校验成功
/**
*
* @param integer 需要校验的值
* @param constraintValidatorContext
* @return
*/
@Override
public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {
return set.contains(integer);
}
}
3、联校验器校验器和校验注解
1、校验注解指定@Constraint(validatedBy = {ListValueConstraintValidator.class})
2、校验器implements ConstraintValidator<ListValue,Integer>
4、使用注解
@NotNull(groups = {AddGroup.class, UpdataStatusGroup.class})
@ListValue(values={0,1},groups = {AddGroup.class, UpdataStatusGroup.class},message = "必须输入指定的值aa")
private Integer showStatus;