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;