我写了一个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
知道如何修复方法以迎合第二种格式请求网址吗?
答案 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));
}
}