У меня есть класс контроллера, который имеет отображение ниже, и я пытаюсь вызвать это с помощью ajax.
@RequestMapping(value = "/jobs", method = RequestMethod.POST, headers = "Accept=*/*")
@ResponseBody
public String associate(@ModelAttribute ("job") Job job, @RequestParam(value="ips") String[] ips) {
logger.debug("associate: No of IP Ranges: {} ", ips.length);
logger.debug("associate: jobSchedule: {} " , job.getScanId());
}
Вызов Jquery Ajax, как показано ниже:
$.ajax({
type: 'POST',
url: urlstr,
data : {job:job ,ips: ipIds.toString()}
success: function(data, textStatus, jqXHR) {
if(data != ""){
if(data != ""){
alert(data);
location = ctx + '/rest/settings';
}
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert('There was an error in scheduling.' + errorThrown );
}
});
Он может определить длину ips, но job.getScanId() возвращает значение null. Но когда я предупреждаю в jsp, он печатает идентификаторы сканирования из моего объекта задания json.
Я не знаю, какую ошибку я делаю. Я думаю, что я прав в части контроллера, но я не знаю, правильно ли я передаю объект задания и массив строк. Любые указатели?
Job
и фактическое тело отправленного запроса? - person Sotirios Delimanolis   schedule 18.12.2013@ModelAttribute
будет работать только с параметрами запроса, а не с JSON. Для JSON используйте@RequestBody
- person M. Deinum   schedule 18.12.2013