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;
        }
  • 相关阅读:
    【无中生有】---4----数据库设计-3
    【无中生有】---2---数据库设计-1
    redis3.0的demo实验
    redis3.0的demo实验
    那些在学习iOS开发前就应该知道的事(part 1)
    模板文件中的插件嵌入点列表
    图像处理框架 Core Image 介绍
    sharepoint services
    DiscuzX2.5数据库字典 值得学习
    Sublime Text 使用技巧
  • 原文地址:https://www.cnblogs.com/yangyongjie/p/12889070.html
Copyright © 2011-2022 走看看