目录

  • 描述
  • 示例
  • 分析

描述

在此记录一下使用RestTemplate过程中所踩到的一个坑(参数映射中的传值问题)。

示例

**错误示例:**Map<Object,Object>

@Configuration
public class RestTemplateUtil{@AutowiredRestTemplate getRestTemplatepublic final static String NULL_ERROR_MSG = "该参数值不能为空,请检查参数值";/*** 常规POST* @param url 请求地址* @return JSONObject*/public Object postResource(String url, Map<Object, Object> params) {Assert.notEmpty(params, NULL_ERROR_MSG);return Objects.requireNonNull(getRestTemplate.postForObject(url, null, String.class, params));}
}@SpringBootTest
public class Test{String urlRes7 = "http://127.0.0.1:18080/demo/getUser/id/{id}/name/{name}";@Testvoid contextLoads() {Map<Object, Object> map = new HashMap<>();map.put("id", "456");map.put("ni", "1234");        System.out.println(resttemplaterestTemplateUtil.postResource(urlRes7, map));}
}
报错代码:Not enough variable values available to expand ‘xxx‘,遇见这个错的时候,如果你要不仔细观察的话,
那么这个错误会让你摸不到头绪,就会让自己陷入这个问题对应的解决办法中:“值没有映射上,只需要映射上值即可”,
这个观点,但实际的问题却是参数类型的原因,所以当遇到问题的时候一定要仔细观察,
观察一下执行流程,这样的话,你会很快定位到问题所在。

正确示例:Map<String,Object>

@Configuration
public class RestTemplateUtil{@AutowiredRestTemplate getRestTemplatepublic final static String NULL_ERROR_MSG = "该参数值不能为空,请检查参数值";/*** 常规POST* @param url 请求地址* @return JSONObject*/public Object postResource(String url, Map<String, Object> params) {Assert.notEmpty(params, NULL_ERROR_MSG);return Objects.requireNonNull(getRestTemplate.postForObject(url, null, String.class, params));}
}@SpringBootTest
public class Test{String urlRes7 = "http://127.0.0.1:18080/demo/getUser/id/{id}/name/{name}";@Testvoid contextLoads() {Map<String, Object> map = new HashMap<>();map.put("id", "456");map.put("ni", "1234");        System.out.println(resttemplaterestTemplateUtil.postResource(urlRes7, map));}
}

分析

RestTemplate的方法参数对象是Map<String,Object>类型,不支持Map<Object,Object>类型,如果使用Map<Object,Object>类型的话,虽然不会报错,但是会一直提示Not enough variable values available to expand ‘xxx‘错误,即使你调试到底层查看,也无法快速定位到问题,所以严格按照方法的指定类型是很重要的。

分析Not enough variable values available to expand ‘xxx‘相关推荐

  1. Variable Values‘ hover uses the same modifier as ‘Combined Hover‘ hover.

    myeclipse设置debug时,鼠标悬停在变量上展示参数:其他情况下,鼠标悬停在变量上展示类型,或方法返回值:会发生标题所示错误,修改如下, 设置普通模式下鼠标悬停时,按住ctrl见,提示变量信息 ...

  2. Spring RestTemplate Exception: “Not enough variables available to expand”; RestTemplate url附带json数据

    RestTemplate get请求url附带json数据频频出现报错信息 Spring RestTemplate Exception: "Not enough variables avai ...

  3. FFmpeg过滤器框架分析

    FFmpeg过滤器框架分析 目录 主要结构体和API介绍 AVFilterGraph-对filters系统的整体管理 AVFilter-定义filter本身的能⼒ AVFilterContext-fi ...

  4. 归因分析_归因分析:如何衡量影响? (第2部分,共2部分)

    归因分析 By Lisa Cohen, Ryan Bouchard, Jane Huang, Daniel Yehdego and Siddharth Kumar 由 丽莎·科恩 , 瑞安布沙尔 , ...

  5. 自行车租赁数据分析与可视化_自行车事故分析

    自行车租赁数据分析与可视化 简介: Business Problem (Introduction: Business Problem) This report will try to analyze ...

  6. 静态代码分析工具简介

    静态代码分析工具简介 什么是静态代码分析 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句 ...

  7. 数据探索分析-EDA

    目录 一.什么是EDA 定义 plan 二.案例实战 1.整体步骤 2.实例-python演示 1>数据背景 2>导入相关的包 3>导入数据及数据概览 4>变量初探索 5> ...

  8. 滑动平均模型原理+源码分析

    滑动平均原理部分: 注释:原理部分参考http://www.mbalib.com/,不过这个讲解的太菜了,评论清一色都是看不懂,大家简单看一下原理,例子别看了,越看越糊涂~~ 一.简单移动平均法 简单 ...

  9. 从源码角度分析 Mybatis 工作原理

    作者:vivo互联网服务器团队-Zhang Peng 一.MyBatis 完整示例 这里,我将以一个入门级的示例来演示 MyBatis 是如何工作的. 注:本文后面章节中的原理.源码部分也将基于这个示 ...

最新文章

  1. oracle oats 安装,Mentor完整培训教程.pdf
  2. 在CSDN中如何转载别人的博客
  3. 10、计算机图形学——几何介绍(曲面的分类以及示例)
  4. oracle导入dmp文件报错12154,oracle表空间的创建及dmp 文件的导入(推荐)
  5. 计算机二级web程序设计习题,2015年计算机二级《Web程序设计》习题及答案(5)
  6. 基于json-lib.jar包Json实例程序
  7. ACCESS使用VBA编辑器,ACCESS崩溃后的处理
  8. 中兴被逼入绝境,或将出售手机业务?
  9. 解决8080端口被占用问题
  10. 嵌入式系统——软件知识产权
  11. SylixOS 内存管理源代码分析--pageTable.c
  12. 2017.07.16小组赛题目I
  13. 2021-04-26
  14. QT图形显示和处理1
  15. 街头篮球服务器ip地域位置图,浅谈《街头篮球》韩服与国服六个位置的不同之处...
  16. 面试过程中应注意的问题与禁忌
  17. socket 5协议详解
  18. 最详细的MOS管讲解
  19. rabbitMq工作模式特性及整合springboot
  20. 后台版本趣味测试威信小程序源码下载支持自定义问题等等

热门文章

  1. 本地房产公众号项目实操分享
  2. 云安对于数据中心容灾恢复及数据库监控
  3. 高档次的计算机教室设计,一间智慧教室的费用清单--互动课室高教版
  4. 计算机在小学语文教学中的应用的现状,计算机在小学语文教学中的应用案例分析...
  5. 将微信公众号的文章保存到本地pdf
  6. 鱼眼摄像头的畸变矫正方法-python+opencv
  7. 角色所在服务器正在维护,梦幻西游角色所在服务器,角色所在服务器如何删除...
  8. 员工关系专员岗位职责是什么?什么是员工关系专员?
  9. Jmeter 启动时报错:Not able to find Java executable or version. Please check your Java installation.
  10. ACM比赛中常见的错误