伪装-使用带参数/路径变量的querymap时的NPE

问题描述

我需要发出这样的请求 host.com/filter1/filter2/filter3?param1= {blah}&param2 = {blah} ,但我遇到了一些问题。

我正在使用POJO来表示路径变量和请求参数。基于this thread,我在feignClient中将其布局如下:

 @FeignClient( name = "documentsFeignClient" )
public interface DocumentsFeignClient
{

    @RequestLine( "GET /documents" +
                  "/{filters.entityType}" +
                  "/{filters.entityId}" +
                  "/{filters.documentType}" 
    @Headers( { "Content-Type: application/json","X-User-Id: {userId}","X-Tenant-Id: {tenantId}" } )
    Document getDocuments( @PathVariable( "filters" ) AttachedDocumentsFilters filters,@QueryMap AttachedDocumentsQueryMap variablesQueryMap,@Param( "userId" ) Long userId,@Param( "tenantId" ) Long tenantId );

但是,当我从带有空的queryMap的客户端进行呼叫时:documentsFeignClient.getDocuments( filters,null,1L,1L );,我得到了ReflectiveFeign.java中源代码这部分的NPE:

    private RequestTemplate addQueryMapQueryParameters(Object[] argv,RequestTemplate mutable) {
      
      Map<Object,Object> queryMap = (Map<Object,Object>) argv[metadata.queryMapIndex()];
      for (Entry<Object,Object> currEntry : queryMap.entrySet()) {

特别是从queryMap检索entrySet的行。奇怪的是,当我在客户端中实际构建查询映射时,出现了noSuchMethodError。

我已经尝试了很多方法-切换参数的顺序(基于其他线程),将@QueryMap更改为@SpringQueryMap等,但是没有任何效果。

我该如何解决?我想我可以为每个单独的字段替换@QueryMap w / @RequestParam,但是我想尝试避免这种情况,因为我们有4个请求参数,并且可能会添加更多。我正在使用假装9.5.0

提前感谢您的帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...