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

  • 相关阅读:
    Baidu aip创建TTS、ASR应用许可并申请免费试用
    网页设计与制作(基本步骤)
    2021新的一年要努力变强变好
    CentOS7查看和关闭防火墙
    CentOS7安装RabbitMQ
    uwsgi启动flask项目(venv虚拟环境)
    centos7 配置python虚拟环境以及使用-virtualenv
    uwsgi下载安装配置(四)http、http-socket和socket配置项详解
    Ubuntu 16.04安装Nginx
    uwsgi下载安装配置(三)uwsgi配置参数讲解
  • 原文地址:https://www.cnblogs.com/wujf/p/15770576.html
Copyright © 2011-2022 走看看