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

示例网址:

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

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

我希望能够做到这样的事情(或类似的,不在乎,只要我有权访问请求参数名称的映射 - >值:

@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实现这一点?


虽然其他答案是正确的,但它肯定不是直接使用HttpServletRequest对象的“Spring方式”。 答案其实很简单,如果你熟悉Spring MVC,你会期待什么。

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

编辑

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

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

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

/编辑

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

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


HttpServletRequest对象已经提供了一个参数图。 有关更多详细信息,请参阅request.getParameterMap()。

链接地址: http://www.djcxy.com/p/18001.html

上一篇: How to get all request params in a map in Spring controller?

下一篇: How to for each the hashmap?