2013-11-26 49 views
0

我写了一个弹簧-MVC控制器的方法来获得的值的数组中的请求parameter.The方法看起来像下面Spring MVC的请求参数绑定

/** 
Trying to get the value for request param foo which passes multiple values 

**/ 
@RequestMapping(method=RequestMethod.GET) 
public void performActionXX(HttpServletRequest request, 
         HttpServletResponse response, 
         @RequestParam("foo") String[] foo) { 

...... 
...... 

} 

当请求URL是在上述方法中能正常工作下面格式

...?foo=1234&foo=0987&foo=5674. 

然而,当请求的URL是在以下格式服务器返回400错误

...?foo[0]=1234&foo[1]=0987&foo[2]=5674 

任何想法如何解决方法来迎合第二个格式请求url?

+0

你为什么要这样做? “foo [0] = 1234&foo [1] = 0987&foo [2] = 5674”而不是其他方式?有什么特别的理由 – fmucar

+0

我无法控制请求网址 – ak123

回答

1

这不可能与@RequestParam。你可以做的就是实现并注册自己的HandlerMethodArgumentResolver执行,以解决像

...?foo[0]=1234&foo[1]=0987&foo[2]=5674 

请求参数到一个数组。你总是可以检查RequestParamMethodArgumentResolver的代码,看看Spring是如何做到的。

请注意,我建议您更改客户端创建URL的方式。 服务器应该定义一个API,并且客户端应该遵循它,这就是为什么我们有400个错误请求状态码。

0

我使用request.getParameterMap()解决了这个问题。下面是代码。

Map<String,String> parameterMap= request.getParameterMap(); 
    for(String key :parameterMap.keySet()){ 
     if(key.startsWith("nameEntry")){ 
      nameEntryLst.add(request.getParameter(key)); 
     } 
    }