假設點擊一個超級鏈接並使用以下參數列表myparam=myValue1&myparam=myValue2&myparam=myValue3
觸發一個URL。現在我怎樣才能在spring mvc中使用捕獲所有參數?如何使用spring mvc使用@RequestParam捕獲多個參數?
我的要求是我必須捕獲所有參數並將它們放在地圖中。
請幫忙!
假設點擊一個超級鏈接並使用以下參數列表myparam=myValue1&myparam=myValue2&myparam=myValue3
觸發一個URL。現在我怎樣才能在spring mvc中使用捕獲所有參數?如何使用spring mvc使用@RequestParam捕獲多個參數?
我的要求是我必須捕獲所有參數並將它們放在地圖中。
請幫忙!
要獲得一次所有參數試試這個:
public ModelAndView postResultPage(@RequestParam MultiValueMap<String, String> params)
此功能在@RequestParam
Java文檔(3段)描述:
註釋表明方法的參數應該是綁定到Web請求參數。支持Servlet和Portlet環境中的註釋處理程序方法。
如果方法參數類型是Map並且指定了請求參數名稱,那麼請求參數值將轉換爲Map,前提是可以使用適當的轉換策略。
如果該方法的參數是
Map<String, String>
或MultiValueMap<String, String>
和未指定的參數名稱,那麼,地圖參數被填充有所有請求參數名稱和值。
好吧,我知道了..我能夠獲得params中的所有參數和它們的值,現在我該如何使用它們?請告訴我.. –
看來你不能得到
Map<String,String>
,因爲所有的PARAMS具有相同的名稱 「myparam」
試試這個:
public ModelAndView method(@RequestParam("myparam") List<String> params) { }
它應該是'@RequestParam'而不是'@RequestRaram'。注意'P'而不是'R'。我嘗試使用上面的代碼,並得到一個錯誤,並沒有趕上它,因爲這個微妙的拼寫錯誤。希望這可以幫助某人。感謝您的有用答案:) – JulianDavid
@JulianDavid謝謝! – vitaly256
@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。
哦謝謝!我正在尋找這個。 –
已接受! –
如何爲此類地圖對象進行soapui rest測試? –
在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";
}
都是你的參數叫做 「myparam」? – joragupra