这是一个很小的问题,平时工作中容易忽视,今天在做一个需求,需要利用ajax想后台传递两个数组,切两个数组有可能为空的情况。这里遇到了两个问题:1.ajax传递数组后台接收不了,2.当传递数组为空的时候系统空指针。
问题1:ajax传递数组后台接收不了
出现问题的1的原因是因为ajax的解析数组传到后台的时候为其参数名多加了一个[],其实我们在后台节后参数的时候在数组名后面加上[]也是可以的,但是这样做不妥。如下代码可以在ajax中加入traditional: true,这个就可以了,后台就可以正常接收数组。
$.ajax({
type: "POST",
dataType: "json",
traditional: true,
data: {
id : data,
deleteOrg : deleteArray,
insertOrg : insertArray,
},
});
问题2:当传递数组为空的时候系统空指针
出现问题2是因为ajax向后台传递参数的时候如果数组为空会默认舍弃这个字段。解决这个问题可以在后台springmvc接收逇时候解决。如下代码设置required=false即可,当传递数组为空的时候对应字段为null。
@RequestParam(value="deleteOrg", required=false) List<String> deleteOrg
@RequestParam(value="insertOrg", required=false) List<String> insertOrg