自定义校验,配合注解校验入参一起使用
JudgeParam.java
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {JudgeParamConstraintValidator.class})
public @interface JudgeParam {
String message() default "{javax.validation.constraints.NotNull.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
//定义数组 描述可取值的内容
String[] judge() default {};
}
JudgeParamConstraintValidator.java
import org.springframework.util.CollectionUtils;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.List;
/**
* @description: 校验器
* @param: * @param null
* @return: null
**/
public class JudgeParamConstraintValidator implements ConstraintValidator<JudgeParam, String> {
List<?> list;
/**
* @description: 初始化时候 执行
* @param: [constraintAnnotation]
* @return: void
**/
@Override
public void initialize(JudgeParam constraintAnnotation) {
//拿到了 我们在代码中指定的 0,1, 如果代码指定4,5,6拿到就是456,代码中指定的啥拿到是啥
String[] judge = constraintAnnotation.judge();
list = CollectionUtils.arrayToList(judge);
}
/**
* @description: 校验
* @param: [value, constraintValidatorContext]
* @return: boolean
**/
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
//value 表示前端传过来的数据 返回值 是boolean
return list.contains(value);
}
}
示例