问题很不言自明。我想通过没有 ajax 的 POST 表单向我的控制器发送 2 个不同的对象数组。
由于参数的大小,我将问题更改为使用 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