美文网首页
@RequestBody 接收动态参数

@RequestBody 接收动态参数

作者: jellyb | 来源:发表于2018-09-20 19:56 被阅读9次

    方案:

    1. 使用map 来接收不确定的参数信息,然后转换到bean上,不会因为参数为null导致解析失败异常!
    /**
         * 转换map 到bean
         * @param map
         * @param obj
         */
        public static void transMap2Bean(Map<String,Object> map, Object obj) {
    
            try {
                BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
                PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
    
                for (PropertyDescriptor property : propertyDescriptors) {
                    String key = property.getName();
    
                    if (map.containsKey(key)) {
                        Object value = map.get(key);
                        // 得到property对应的setter方法
                        Method setter = property.getWriteMethod();
                        setter.invoke(obj, value);
                    }
                }
            } catch (Exception e) {
                log.error("transfer error!");
            }
        }
    

    实现自己的HandlerMethodArgumentResolver,参考
    https://sdqali.in/blog/2016/01/29/using-custom-arguments-in-spring-mvc-controllers/

    如果参数确定固定为两套或三套方案,可以使用多加一个entity来接收,待测试;

    相关文章

      网友评论

          本文标题:@RequestBody 接收动态参数

          本文链接:https://www.haomeiwen.com/subject/cpannftx.html