2013-11-26 114 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)); 
     } 
    }