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

  • 相关阅读:
    各种视角了解数组Array以及案例展示
    js基础面试高频面点2:Javascript中undefined和not defined有什么区别,和null又有什么联系?
    一些好用的Linux命令工具
    Linux实用命令工具-dtrx根据需要自动解压
    J2EE--Hibernate基础笔记
    mysql用户与权限管理笔记
    找出字符串中出现频率最少的字符,并将其去除
    Linux常用命令--文件(夹)查找之find命令
    J2EE--Struts2基础开发笔记
    Java多线程基础知识总结笔记
  • 原文地址:https://www.cnblogs.com/wujf/p/15770576.html
Copyright © 2011-2022 走看看