如何解决伪装-使用带参数/路径变量的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 举报,一经查实,本站将立刻删除。