zoukankan      html  css  js  c++  java
  • springboot自定义验证传值范围

    package com.xf.common;
    
    import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
    import static java.lang.annotation.ElementType.CONSTRUCTOR;
    import static java.lang.annotation.ElementType.FIELD;
    import static java.lang.annotation.ElementType.METHOD;
    import static java.lang.annotation.ElementType.PARAMETER;
    import static java.lang.annotation.ElementType.TYPE_USE;
    import static java.lang.annotation.RetentionPolicy.RUNTIME;
    
    import java.lang.annotation.Documented;
    import java.lang.annotation.Retention;
    import java.lang.annotation.Target;
    
    /**
     * 边界值校验
     * @author Lilu
     * @date 2021-7-16 16:57
     */
    
    import javax.validation.Constraint;
    import javax.validation.Payload;
    
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
    @Retention(RUNTIME)
    @Documented
    @Constraint(validatedBy = { ValueInImpl.class })
    public @interface ValueIn {
    
        String[] in();
    
        String message() default "参数不在允许范围";
    
        Class<?>[] groups() default {};
    
        Class<? extends Payload>[] payload() default {};
    
    }
    package com.xf.common;
    
    import javax.validation.ConstraintValidator;
    import javax.validation.ConstraintValidatorContext;
    
    import org.springframework.stereotype.Component;
    
    @Component
    public class ValueInImpl implements ConstraintValidator<ValueIn, String> {
    
        String[] in;
    
        @Override
        public boolean isValid(String value, ConstraintValidatorContext context) {
            for (int i = 0; i < in.length; i++) {
                if (in[i].equals(value))
                    return true;
            }
            return false;
        }
    
        @Override
        public void initialize(ValueIn constraintAnnotation) {
            this.in = constraintAnnotation.in();
            ConstraintValidator.super.initialize(constraintAnnotation);
        }
    
    }
    @PostMapping("test")
        @ApiOperation(value = "0.test", notes = "")
        @ApiOperationSupport(order = 0)
        public Object test(@ApiParam("a") @ValueIn(in = { "1",
                "2" }, message = "hjdfashjfkhsakjf") @RequestParam(value = "a") String a) throws Exception {
    //        DataSourceHolder.setDataSource("2");
            return R.ok();
        }
        @ExceptionHandler(value = ConstraintViolationException.class)
        @ResponseBody
        public Object jsonErrorHandler(HttpServletRequest req, ConstraintViolationException e) throws Exception {
            return R.error(e.getMessage());
        }

    后台兼职接单中,联系我微信:wjf88520

    by wujf

    mail:921252375@qq.com

  • 相关阅读:
    MATLAB getframe
    matlab 中 hold on 和hold off的使用
    在MATLAB中得到系统当前日期、时间的函数
    Matlab 中常用的直线与点形表示属性
    matlab中的unique函数详解
    栈的整体作用
    文件句柄、文件描述符与进程和多线程的那些事
    IP头、TCP头、UDP头详解以及定义
    计算机是如何启动的?
    uCOS-II 任务调度机制
  • 原文地址:https://www.cnblogs.com/wujf/p/15770576.html
Copyright © 2011-2022 走看看