Spring MVC绑定请求参数

时间:2013-11-26 22:04:46

标签: spring-mvc

我写了一个spring-mvc控制器方法来获取request参数中的值数组。方法如下所示

/**
 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) {

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

}

当请求网址格式低于

时,上述方法可以正常工作
...?foo=1234&foo=0987&foo=5674.

但是,当请求网址格式低于格式时,服务器返回400错误

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

知道如何修复方法以迎合第二种格式请求网址吗?

2 个答案:

答案 0 :(得分:1)

@RequestParam无法做到这一点。您可以做的是实现并注册您自己的HandlerMethodArgumentResolver来执行以解决请求参数,如

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

进入一个数组。您可以随时查看RequestParamMethodArgumentResolver的代码,了解Spring是如何做到的。

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

答案 1 :(得分:0)

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

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