2014-11-14 4 views
2

eventIdsToDelete ["24616342", "24615878"] Я пытаюсь отправить список длинных значений контроллеру Spring, но я получаю ошибку 400 Bad Request. Поэтому я предполагаю, что моя подпись сопоставления запросов неверна.Запросить список параметров long

Мой 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

Try @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, но я ха ve, чтобы иметь тип String вместо длинного типа. См. Отредактированный пост. Как я могу использовать параметр как длинный список типов вместо типа String. –

Смежные вопросы