admin管理员组文章数量:1794759
分析Not enough variable values available to expand ‘xxx‘
目录
- 描述
- 示例
- 分析
在此记录一下使用RestTemplate过程中所踩到的一个坑(参数映射中的传值问题)。
示例**错误示例:**Map<Object,Object>
@Configuration public class RestTemplateUtil{ @Autowired RestTemplate getRestTemplate public 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 = "127.0.0.1:18080/demo/getUser/id/{id}/name/{name}"; @Test void 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{ @Autowired RestTemplate getRestTemplate public 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 = "127.0.0.1:18080/demo/getUser/id/{id}/name/{name}"; @Test void 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‘ 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686992646a126367.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论