这个问题很容易理解。我想通过POST表单将两个不同的对象数组发送到我的控制器,而不使用ajax。
由于参数大小,我改变了我的问题,使用ajax和get请求。目前出现了400(错误请求)。我不知道为什么。请看一下...
我有以下对象:
var phone = {phoneId:"", phoneNumber:"", phoneType:""};
var schedule = {scheduleId:"", time:"", day:""};
我将它们放入 JavaScript 数组中:
var phones = [phone1, phone2, phone3];
var schedules = [schedule1, schedule2];
我使用ajax发送:
var data = {
index: id,
schedules: schedules,
phones: phones
}
var url = "/myController/myUrl"
$.getJSON(url, data, function(result){
if(result.ok){
$('#messageAlertSuccess').show();
} else {
$('#messageAlertError').show();
}
});
我创建了包装类来进行映射,如下:
public class PhoneWrapper(){
private String phoneId;
private String phoneNumber;
private String phoneType;
}
当然,scheduleWrapper也遵循相同的约定。
这是我控制器中的方法:
@ResponseBody
@RequestMapping(value="/myUrl", method=RequestMethod.GET)
public Result doSomething(@RequestParam("index") int index,
@RequestParam("phones") Set<PhoneWrapper> phoneWrappers,
@RequestParam("schedules") Set<ScheduleWrapper> scheduleWrappers,
Model model,
HttpSession session){
//do stuff here.
}
我目前得到了一个400错误。那么问题出在哪里了?
更新:这是 .getJSON jQuery 方法正在构建的 URL:
http://localhost:8080/myApp/myController/myUrl?index=9&schedules%5B0%5D%5BscheduleId%5D=1&schedules%5B0%5D%5BfromDay%5D=Monday&schedules%5B0%5D%5BtoDay%5D=Friday&schedules%5B0%5D%5BfromTime%5D=08%3A30%3A00&schedules%5B0%5D%5BtoTime%5D=16%3A00%3A00&schedules%5B1%5D%5BscheduleId%5D=5&schedules%5B1%5D%5BfromDay%5D=Saturday&schedules%5B1%5D%5BtoDay%5D=Monday&schedules%5B1%5D%5BfromTime%5D=09%3A00%3A00&schedules%5B1%5D%5BtoTime%5D=13%3A00%3A00&phones%5B0%5D%5BphoneId%5D=6&phones%5B0%5D%5BphoneNumber%5D=787-788-1111&phones%5B0%5D%5BphoneType%5D=PHONE&phones%5B1%5D%5BphoneId%5D=106&phones%5B1%5D%5BphoneNumber%5D=787-795-4095&phones%5B1%5D%5BphoneType%5D=FAX
Object[]
到PhoneWrapper[]
或ScheduleWrapper[]
的映射没有被执行。然而,当向控制器传递数据时,使用括号命名参数非常重要,否则它将无法将其视为传入的数组。 - Nimchip