自定义校验,配合注解校验入参一起使用
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);
}
}
示例
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/192775.html