Spring cloud openFeign无法创建动态查询参数。它抛出以下异常,因为SpringMvcContract尝试查找不存在的RequestParam值属性。
java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0
@RequestMapping(method = RequestMethod.GET, value = "/orders")
Pageable<Order> searchOrder2(@RequestParam CustomObject customObject);
我尝试使用@QueryMap
代替@RequestParam
,但是@QueryMap
不会生成查询参数。
Btw @RequestParam Map<String, Object> params
方法参数可以很好地生成动态查询参数。
但是我想使用自定义对象,伪装客户端可以根据对象的属性生成动态查询参数。
谢谢
答案 0 :(得分:4)
来自Spring Cloud OpenFeign Docs:
Spring Cloud OpenFeign提供了等效的@SpringQueryMap批注,该批注用于将POJO或Map参数注释为查询参数映射
因此您的代码应为:
@RequestMapping(method = RequestMethod.GET, value = "/orders")
Pageable<Order> searchOrder2(@SpringQueryMap @ModelAttribute CustomObject customObject);
答案 1 :(得分:3)
app/jni
有一个open issue,用于支持pojo对象作为请求参数。因此,我使用了请求拦截器,该请求拦截器从feign方法获取对象,并从其字段创建url的查询部分。感谢@charlesvhe
spring-cloud-starter-feign
}