2014-11-14 45 views
2

eventIdsToDelete [「24616342」,「24615878」]我想發送Long值列表到Spring控制器,但我得到400錯誤請求錯誤。所以我猜測我的請求映射簽名是不正確的。請求參數列表長

我的jQuery的AJAX調用

var myList = [24616342,24616201,24616310]; 
$.ajax({ 
    url: '/myApp/path/toController', 
    type: 'POST', 
    data: {myList: JSON.stringify(myList)}, 
    success: function(response) { ... } 
}); 

我的請求映射

@RequestMapping(value = "/myApp/path/toController", method = RequestMethod.POST) 
public @ResponseBody boolean doSomething(Model model, @RequestParam List<Long> myList) 
{ 
    System.out.println(myList); 
    return true; 
} 

在Firebug控制檯我看到URL被調用,但是在後期標籤我看到參數

myList ["24616342","24615878"] 

我試圖通過更改請求映射參數到

List<String> 

它工作正常。但我想要請求映射方法類型爲String。

回答

3

用以下解決改變

(一)jQuery的呼叫

data: {myList: myList}, 

(二)控制器的方法

@RequestMapping(value = "/myApp/path/toController", method = RequestMethod.POST) 
public @ResponseBody boolean doSomething(Model model, @RequestParam("myList[]") List<Long> myList) 
{ 
    System.out.println(myList); 
    return true; 
} 
0

嘗試@RequestBody代替

@RequestMapping(value = "/myApp/path/toController", method = RequestMethod.POST) 
public @ResponseBody boolean doSomething(Model model, @RequestBody List<Long> data) 
{ 
    System.out.println(data); 
    return true; 
} 
+0

我做這個工作與@RequestParam本身,但我哈哈有字符串類型,而不是長類型。請參閱編輯後。我怎樣纔能有參數作爲長類型列表而不是字符串類型。 – 2014-11-14 18:41:50