feign-npe

tpxzln5u  于 2021-07-05  发布在  Java
关注(0)|答案(0)|浏览(302)

我需要发出这样的请求:host.com/filter1/filter2/filter3?param1={blah}&param2={blah},我遇到了一些问题。
我使用pojo来表示路径变量和请求参数。基于这条线索,我在我的假客户机中这样安排:

@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的行。奇怪的是,当我在客户机中实际构建查询Map时,我得到了一个nosuchmethoderror。
我试过很多方法——切换参数的顺序(基于其他线程),将@querymap改为@springquerymap,等等,但是没有一个奏效。
我如何解决这个问题?我想我可以为每个字段替换@querymap w/@requestparam,但我想尽量避免这样做,因为我们有4个请求参数,可能会添加更多。我用的是假9.5.0
提前谢谢你的帮助

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题