zoukankan      html  css  js  c++  java
  • 校验传入参数是否为空

    这种方式适用于接收较多的参数,且其中有些参数是不能为空的,去校验不能为空的参数。

    1、接收绑定请求参数到

       @ResponseBody
        @RequestMapping(value = "saveContent", method = RequestMethod.POST)
        public ContentResult saveContent(CpContent cpContent) {
            ContentResult result = new ContentResult();
            // 必填参数校验
            boolean pass = BeanUtil.paramCheck(cpContent);
            if (!pass) {
                result.fail(ResponseEnum.ERROR_PARAM.getCode(), ResponseEnum.ERROR_PARAM.getMsg());
                return result;
            }
    }

    2、DTO中不能为空的参数加上自定义注解标记

        @ParamCheck(emptyAble= CheckEnum.NOTEMPTY)
        private String title;

    3、自定义注解

    /**
     * 参数校验注解
     *
     * @author yangyongjie
     * @date 2020/5/14
     * @desc
     */
    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface ParamCheck {
    
        /**
         * 是否允许为空
         */
        CheckEnum emptyAble() default CheckEnum.EMPTY;
    }
    
    public enum CheckEnum {
        NOTEMPTY,
        EMPTY
    }

    4、校验工具方法

        /**
         * 判断参数是否为空
         *
         * @param obj
         * @return
         */
        public static boolean paramCheck(Object obj) {
            try {
                Class<?> clazz = obj.getClass();
                Field[] fields = clazz.getDeclaredFields();
                for (Field field : fields) {
                    field.setAccessible(true);
                    ParamCheck paramCheck = field.getAnnotation(ParamCheck.class);
                    if (paramCheck != null) {
                        //非空校验,后续若需增加校验类型,应抽离
                        if (paramCheck.emptyAble() == CheckEnum.NOTEMPTY) {
                            Object val = field.get(obj);
                            if (val == null || "".equals(val.toString())) {
                                return false;
                            }
                        }
                    }
                }
            } catch (Exception ex) {
                LOGGER.info("Param verify error");
                return false;
            }
            return true;
        }
  • 相关阅读:
    K210识别水果模型
    一键开关机短路
    Arudino IDE添加STM32官方管理器stm32duino / Arduino_Core_STM32
    ESP32 Ble
    Blynk软件配置及Mixly编程教程
    Laravel安装及配置,完成基础的demo
    electron下载/打包慢?解决办法.....
    ESP32+PHP+MYSQL 搭建自己的物联网平台Demo
    PCA9536读写测试之MicroPython
    MSF实验2
  • 原文地址:https://www.cnblogs.com/yangyongjie/p/12889070.html
Copyright © 2011-2022 走看看