List校验,使用原生@Size即可实现,下诉只是范例
自定义注解
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = ListValidator.class)
public @interface ListValid {
int min() default 0;
int max() default Integer.MAX_VALUE;
String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
自定义注解校验实现类
@Component
public class ListValidator implements ConstraintValidator<ListValid, List> {
private int minLength;
private int maxLength;
@Override
public void initialize(ListValid listValid) {
minLength = listValid.min();
maxLength = listValid.max();
}
@Override
public boolean isValid(List target, ConstraintValidatorContext constraintValidatorContext) {
int size = null == target ? 0 : target.size();
if (0 != minLength && null == target) {
return false;
}
if (size < minLength) {
return false;
}
if (0 != maxLength && size > maxLength) {
return false;
}
return true;
}
}
应用
@Valid
@ListValid(min = 1,message = "请编辑后保存")
private List<BO> BOList;