将javascript对象数组作为参数发送到控制器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将javascript对象数组作为参数发送到控制器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2678字,纯文字阅读大概需要4分钟。
内容图文
问题非常自我解释.我想通过POST表单发送2个不同的对象数组,而没有ajax到我的控制器.
由于params的大小,我将我的问题改为使用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
解决方法:
我看到一些看起来不正确的事情
除非你的包装中有getter和setter(DTO是一个更好的名字),我不会将它们用于我的DTO进行xhr调用,你需要更改
public class PhoneWrapper(){
private String phoneId;
private String phoneNumber;
private String phoneType;
}
公共领域与私人领域
public class PhoneWrapper(){
public String phoneId;
public String phoneNumber;
public String phoneType;
}
你的js数组不是数组而是对象;
var phones = {phone1, phone2, phone3};
var schedules = {schedule1, schedule2};
这里它们是数组
var phones = [phone1, phone2, phone3];
var schedules = [schedule1, schedule2];
确保命名与js和java两者相同.我发现在解决这些问题时打开调试非常有帮助. log4j –
<logger name="org.springframework.web.servlet.mvc" >
<level value="debug" />
</logger>
编辑
因此,在更新了更多信息的问题后,我注意到它与Binding a list in @RequestParam的问题相同
内容总结
以上是互联网集市为您收集整理的将javascript对象数组作为参数发送到控制器全部内容,希望文章能够帮你解决将javascript对象数组作为参数发送到控制器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。