博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring-cloud-feign 使用@RequetParam报错QueryMap parameter must be a Map: class java.lang.String
阅读量:4978 次
发布时间:2019-06-12

本文共 1021 字,大约阅读时间需要 3 分钟。

这里使用spring-cloud-start-feign: 1.2.6 REALEASE版本,依赖管理器版本是 Camden.SR6

 

出错的原因是@RequestParam的value为empty时,参数会被当作Map来处理

org.springframework.cloud.netflix.feign.annotation.RequestParamParameterProcessor
代码如下:
@Override	public boolean processArgument(AnnotatedParameterContext context,			Annotation annotation) {		RequestParam requestParam = ANNOTATION.cast(annotation);		String name = requestParam.value();		if (emptyToNull(name) != null) {			context.setParameterName(name);			MethodMetadata data = context.getMethodMetadata();			Collection
query = context.setTemplateParameter(name, data.template().queries().get(name)); data.template().query(name, query); } else { // supports `Map` types MethodMetadata data = context.getMethodMetadata(); data.queryMapIndex(context.getParameterIndex()); } return true; }

  

说明spring-cloud-feign处理@RequestParam和Spring mvc的不一样,Spring mvc在@RequestParam的value为空的时候反射得到参数的名字作为value

 

解决方案: 给@RequestParam加上value

转载于:https://www.cnblogs.com/liukedong/p/8580971.html

你可能感兴趣的文章
[SDOI2008]洞穴勘测
查看>>
Difference between Linearizability and Serializability
查看>>
IDEA使用操作文档
查看>>
UIView
查看>>
添加日期选择控件
查看>>
bzoj4765: 普通计算姬 (分块 && BIT)
查看>>
看完漫画秒懂区块链
查看>>
Oracle命令类别
查看>>
stc12c5a60s2驱动TEA5767收音机模块硬件调试总结
查看>>
vue中提示$index is not defined
查看>>
css选择器
查看>>
ASP.NET上传下载文件
查看>>
Galaxy Nexus 全屏显示-隐藏Navigation Bar
查看>>
Spring中使用Velocity模板
查看>>
上周热点回顾(8.18-8.24)
查看>>
Feature toggle
查看>>
day02
查看>>
gvim 配置Pydiction
查看>>
Linux安装指定mysql版本
查看>>
分布式锁的三种实现方式
查看>>