MDb*_*MDb 168 java spring spring-mvc
示例网址:
../search/?attr1=value1&attr2=value2&attr4=value4
Run Code Online (Sandbox Code Playgroud)
我不知道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}
Run Code Online (Sandbox Code Playgroud)
如何使用Spring MVC实现这一目标?
Ada*_*ent 293
虽然其他答案是正确的,但它肯定不是直接使用HttpServletRequest对象的"Spring方式".答案实际上非常简单,如果你熟悉Spring MVC,你会期待什么.
@RequestMapping(value = {"/search/", "/search"}, method = RequestMethod.GET)
public String search(
@RequestParam Map<String,String> allRequestParams, ModelMap model) {
return "viewName";
}
Run Code Online (Sandbox Code Playgroud)
nic*_*ild 34
编辑
已经指出存在(至少截至3.0)纯Spring MVC机制,通过该机制可以获得该数据.我不会在这里详述,因为它是另一个用户的答案.有关详细信息,请参阅@ AdamGent的答案,不要忘记对其进行投票.
在Spring 3.2文档中,RequestMapping
JavaDoc页面和RequestParam
JavaDoc页面都提到了这种机制,但之前只在RequestMapping
页面中提到过.在2.5文档中没有提到这种机制.
对于大多数开发人员来说,这可能是首选方法,因为它删除了(至少这个)HttpServletRequest
与servlet-api jar定义的对象的绑定.
/编辑
您应该有权访问请求查询字符串request.getQueryString()
.
除了getQueryString之外,还可以从request.getParameterMap()中检索查询参数作为Map.
Kev*_*vin 13
HttpServletRequest对象已经提供了参数映射.有关更多详细信息,请参阅request.getParameterMap().
你可以简单地使用这个:
Map<String, String[]> parameters = request.getParameterMap();
Run Code Online (Sandbox Code Playgroud)
这应该工作正常
使用org.springframework.web.context.request.WebRequest
在您的控制器方法的参数,它提供的方法getParameterMap()
,优点是,你不紧张你的应用程序和Servlet API中,WebRequest的是JavaEE模式语境对象的实例.
有两个接口
org.springframework.web.context.request.WebRequest
org.springframework.web.context.request.NativeWebRequest
允许通用请求参数访问以及request/session
属性访问,而不与本机Servlet/Portlet API绑定.
例:
@RequestMapping(value = "/", method = GET)
public List<T> getAll(WebRequest webRequest){
Map<String, String[]> params = webRequest.getParameterMap();
//...
}
Run Code Online (Sandbox Code Playgroud)
PS 有关于可以用作控制器参数的参数的文档.
以下是在Map中获取请求参数的简单示例.
@RequestMapping(value="submitForm.html", method=RequestMethod.POST)
public ModelAndView submitForm(@RequestParam Map<String, String> reqParam)
{
String name = reqParam.get("studentName");
String email = reqParam.get("studentEmail");
ModelAndView model = new ModelAndView("AdmissionSuccess");
model.addObject("msg", "Details submitted by you::
Name: " + name + ", Email: " + email );
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它将分别将studentName和studentEmail的值与名称和电子邮件变量绑定.
小智 5
我可能参加聚会晚了,但是据我了解,您正在寻找类似这样的东西:
for(String params : Collections.list(httpServletRequest.getParameterNames())) {
// Whatever you want to do with your map
// Key : params
// Value : httpServletRequest.getParameter(params)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
209487 次 |
最近记录: |