【问题标题】:unable to pass map to restful method无法将 map 传递给 restful 方法
【发布时间】:2026-01-16 02:15:02
【问题描述】:

我正在尝试通过邮递员调用此 API:

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void printDetails(final MultivaluedMap<String, String> formParams) {

    for(String key : formParams.keySet()) {
        System.out.println(key + "     " + formParams.get(key));
    }
}

但地图结果是空的。请帮助我。

PS:这是我第一次尝试将可变数量的参数传递给 api。我已经提到 sending List/Map as POST parameter jerseyHow to access parameters in a RESTful POST method

我认为我的错误在于我在邮递员中传递参数的方式:postman image

请帮助我。还请帮助如何通过 ajax(在 JS 中)调用来调用此 API。

【问题讨论】:

  • 我想知道答案是否有帮助?请告诉我是否没有,以及您在尝试此解决方案后得到的结果,以便我查看并解决。
  • @notionquest 抱歉回复晚了。我刚试过你的答案。不幸的是,它也给了我一张空地图!
  • 您是否仍然面临同样的问题或设法找到解决方案?
  • @notionquest 我找到了一种可能的解决方案。参考我下面的回答。感谢您的尝试:)

标签: java ajax rest post postman


【解决方案1】:

将请求头设置为"application/x-www-form-urlencoded"

请求正文 - 选择原始并提供如下所述的值:-

{
    "LOCATION": "Singapore"
}

【讨论】:

    【解决方案2】:

    我找到了一个可能的答案。

    @POST
    public void printDetails() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
        Map<String, String[]> mapp =  request.getParameterMap();
        for(String key : mapp.keySet()) {
            System.out.println(key + "     " + mapp.get(key)[0]);
        }
    }
    

    仍然不确定如何通过在参数中传递“final MultivaluedMap”来做到这一点

    【讨论】: