如何在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?