首先要知道springmvc中是不允许直接传递“集合”作为请求的方法参数的。
如下: @RequestMapping(value = "/addAP")
@ResponseBody
public String addAP(List<AriTicketList> ariTicket){
return "0";
}
这样直接中ajax中传递一个集合,springmvc是不允许接收的。下面介绍一下解决方法。
- 新建一个包装类
public class AriTicketList {
private List<AriTicket> ariTicket;// 装配AriTicket
public List<AriTicket> getAriTicket() {
return ariTicket;
}
public void setAriTicket(List<AriTicket> ariTicket) {
this.ariTicket = ariTicket;
}
}
2.编写访问接口
@RequestMapping(value = "/addAP")
@ResponseBody
public String addAP(AriTicketList ariTicketList){
return "0";
}
3.ajax请求封装
// 对象数组
var show = [{"orderId":"111","userName":"小黄"},
{"orderId":"111","userName":"小红"}];
var obj;// 中间值
var ariTicketList;// 需要传入的对象
for(var i = 0; i < show.length; i++){// 数组
var orderId = "ariTicket["+i+"].orderId";// 装配索引
var userName = "ariTicket["+i+"].userName";
obj = {
[orderId]:show[i].orderId,// 动态引入key值,格式 [变量]
[userName]:show[i].userName
};
ariTicketList = $.extend(ariTicketList, obj);// 将多个对象合并成目标对象
}
$.ajax({
async:false,
cache:false,
url:"/AirBooking/User/addAP.action",//访问springmvc路径
data:ariTicketList,// 参数
type:"post",
dataType:"json",
xhrFields: {
withCredentials: true
},
success:function(data){
alert(data);
}
});
}
4.参数合并的结果是
{ariTicket[0].orderId: "111", ariTicket[0].userName: "小黄", ariTicket[1].orderId: "111", ariTicket[1].userName: "小红"}
这样就可以实现传递list集合了。