分析Not enough variable values available to expand ‘xxx‘
目录
- 描述
- 示例
- 分析
描述
在此记录一下使用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‘相关推荐
- Variable Values‘ hover uses the same modifier as ‘Combined Hover‘ hover.
myeclipse设置debug时,鼠标悬停在变量上展示参数:其他情况下,鼠标悬停在变量上展示类型,或方法返回值:会发生标题所示错误,修改如下, 设置普通模式下鼠标悬停时,按住ctrl见,提示变量信息 ...
- Spring RestTemplate Exception: “Not enough variables available to expand”; RestTemplate url附带json数据
RestTemplate get请求url附带json数据频频出现报错信息 Spring RestTemplate Exception: "Not enough variables avai ...
- FFmpeg过滤器框架分析
FFmpeg过滤器框架分析 目录 主要结构体和API介绍 AVFilterGraph-对filters系统的整体管理 AVFilter-定义filter本身的能⼒ AVFilterContext-fi ...
- 归因分析_归因分析:如何衡量影响? (第2部分,共2部分)
归因分析 By Lisa Cohen, Ryan Bouchard, Jane Huang, Daniel Yehdego and Siddharth Kumar 由 丽莎·科恩 , 瑞安布沙尔 , ...
- 自行车租赁数据分析与可视化_自行车事故分析
自行车租赁数据分析与可视化 简介: Business Problem (Introduction: Business Problem) This report will try to analyze ...
- 静态代码分析工具简介
静态代码分析工具简介 什么是静态代码分析 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句 ...
- 数据探索分析-EDA
目录 一.什么是EDA 定义 plan 二.案例实战 1.整体步骤 2.实例-python演示 1>数据背景 2>导入相关的包 3>导入数据及数据概览 4>变量初探索 5> ...
- 滑动平均模型原理+源码分析
滑动平均原理部分: 注释:原理部分参考http://www.mbalib.com/,不过这个讲解的太菜了,评论清一色都是看不懂,大家简单看一下原理,例子别看了,越看越糊涂~~ 一.简单移动平均法 简单 ...
- 从源码角度分析 Mybatis 工作原理
作者:vivo互联网服务器团队-Zhang Peng 一.MyBatis 完整示例 这里,我将以一个入门级的示例来演示 MyBatis 是如何工作的. 注:本文后面章节中的原理.源码部分也将基于这个示 ...
最新文章
- oracle oats 安装,Mentor完整培训教程.pdf
- 在CSDN中如何转载别人的博客
- 10、计算机图形学——几何介绍(曲面的分类以及示例)
- oracle导入dmp文件报错12154,oracle表空间的创建及dmp 文件的导入(推荐)
- 计算机二级web程序设计习题,2015年计算机二级《Web程序设计》习题及答案(5)
- 基于json-lib.jar包Json实例程序
- ACCESS使用VBA编辑器,ACCESS崩溃后的处理
- 中兴被逼入绝境,或将出售手机业务?
- 解决8080端口被占用问题
- 嵌入式系统——软件知识产权
- SylixOS 内存管理源代码分析--pageTable.c
- 2017.07.16小组赛题目I
- 2021-04-26
- QT图形显示和处理1
- 街头篮球服务器ip地域位置图,浅谈《街头篮球》韩服与国服六个位置的不同之处...
- 面试过程中应注意的问题与禁忌
- socket 5协议详解
- 最详细的MOS管讲解
- rabbitMq工作模式特性及整合springboot
- 后台版本趣味测试威信小程序源码下载支持自定义问题等等
热门文章
- 本地房产公众号项目实操分享
- 云安对于数据中心容灾恢复及数据库监控
- 高档次的计算机教室设计,一间智慧教室的费用清单--互动课室高教版
- 计算机在小学语文教学中的应用的现状,计算机在小学语文教学中的应用案例分析...
- 将微信公众号的文章保存到本地pdf
- 鱼眼摄像头的畸变矫正方法-python+opencv
- 角色所在服务器正在维护,梦幻西游角色所在服务器,角色所在服务器如何删除...
- 员工关系专员岗位职责是什么?什么是员工关系专员?
- Jmeter 启动时报错:Not able to find Java executable or version. Please check your Java installation.
- ACM比赛中常见的错误