2014-03-14 219 views

回答

7

要獲得一次所有參數試試這個:

public ModelAndView postResultPage(@RequestParam MultiValueMap<String, String> params) 

此功能在@RequestParam Java文檔(3段)描述:

註釋表明方法的參數應該是綁定到Web請求參數。支持Servlet和Portlet環境中的註釋處理程序方法。

如果方法參數類型是Map並且指定了請求參數名稱,那麼請求參數值將轉換爲Map,前提是可以使用適當的轉換策略。

如果該方法的參數是Map<String, String>MultiValueMap<String, String>和未指定的參數名稱,那麼,地圖參數被填充有所有請求參數名稱和值。

+0

好吧,我知道了..我能夠獲得params中的所有參數和它們的值,現在我該如何使用它們?請告訴我.. –

17

看來你不能得到

Map<String,String> 

,因爲所有的PARAMS具有相同的名稱 「myparam」

試試這個:

public ModelAndView method(@RequestParam("myparam") List<String> params) { } 
+3

它應該是'@RequestParam'而不是'@RequestRaram'。注意'P'而不是'R'。我嘗試使用上面的代碼,並得到一個錯誤,並沒有趕上它,因爲這個微妙的拼寫錯誤。希望這可以幫助某人。感謝您的有用答案:) – JulianDavid

+0

@JulianDavid謝謝! – vitaly256

24
@RequestMapping(value = "users/newuser", method = RequestMethod.POST) 
public String saveUser(@RequestParam Map<String,String> requestParams) throws Exception{ 
    String userName=requestParams.get("email"); 
    String password=requestParams.get("password"); 

    //perform DB operations 

    return "profile"; 
} 

你可以以上述方式使用RequestParam。

+0

哦謝謝!我正在尋找這個。 –

+0

已接受! –

+0

如何爲此類地圖對象進行soapui rest測試? –

2

在Spring 3.0中,你還可以使用MultiValueMap來實現這一目標:

一個基本的例子是:

public String someMethod(@RequestParam MultiValueMap<String,String> params) { 

    final Iterator<Entry<String, List<String>>> it = params.entrySet().iterator(); 

    while(it.hasNext()) { 
     final String k = it.next().getKey(); 
     final List<String> values = it.next().getValue(); 
    } 

    return "dummy_response"; 

} 
相關問題