Spring MVC - 如何在Spring控制器中获取地图中的所有请求参数?

2022-08-31 06:00:21

示例网址:

../search/?attr1=value1&attr2=value2&attr4=value4

我不知道attr1,att2和attr4的名字。

我希望能够做类似的事情(或类似的,不在乎,只要我可以访问请求参数名称的Map ->值:

@RequestMapping(value = "/search/{parameters}", method = RequestMethod.GET)
public void search(HttpServletRequest request, 
@PathVariable Map<String,String> allRequestParams, ModelMap model)
throws Exception {//TODO: implement}

我如何使用Spring MVC实现这一目标?


答案 1

虽然其他答案是正确的,但直接使用HttpServletRequest对象肯定不是“春天的方式”。答案实际上非常简单,如果您熟悉Spring MVC,您会期望什么

@RequestMapping(value = {"/search/", "/search"}, method = RequestMethod.GET)
public String search(
@RequestParam Map<String,String> allRequestParams, ModelMap model) {
   return "viewName";
}

答案 2

编辑

有人指出,存在(至少截至3.0)一种纯粹的Spring MVC机制,通过该机制可以获得这些数据。我不会在这里详细说明,因为它是另一个用户的答案。有关详细信息,请参阅@AdamGent的答案,不要忘记投票。

在Spring 3.2文档中,JavaDoc页面和JavaDoc页面上都提到了这种机制,但在此之前,它只在页面中提到。在 2.5 文档中没有提到这种机制。RequestMappingRequestParamRequestMapping

这可能是大多数开发人员的首选方法,因为它删除了(至少是这个)绑定到 servlet-api jar 定义的对象。HttpServletRequest

/编辑

您应该可以通过 request.getQueryString() 访问请求查询字符串。

除了 getQueryString 之外,还可以从 request.getParameterMap() 中检索查询参数作为 Map。


推荐