在做web应用时很多时候会遇到批量操作的情况,如批量删除某些记录。这时需要将所需删除的记录的id组成的数组发送给后台进行处理,这里将这些id发送给后台的方式很多,比如:将id组成使用,或其他符号分隔开的字符串,后台拿到这个字符串按照相应的分割方式将字符串分割然后获得这些id。
这里前端使用ajax的方式,后端使用struts2,通过ajax将数组发送给action。
前端jsp中的javascript代码(这里使用了easyui):
var rows = $("#articlelist").datagrid('getSelections');
if(rows.length==0){
$.messager.alert('提示','请选择所需删除的记录!');
return false;
}
var ids=[];
for (var i = 0; i < rows.length; i++) {
var id=rows[i].id; //取出id值
ids.push(id); //将id值放入数组中
}
var params = $.param({'ids':ids},true);
var url = 'articlemgmt/articleAction_deleteBatch';
$.messager.confirm('提示', '确定删除?', function(r){
if(r){
$.ajax({
url : url,
data: params,
cache : false,
async : false,
type : "POST",
dataType : 'json',
success : function (result){
<span style="white-space:pre"> </span>//成功处理
}
});
}
});
这里使用到了jquery的param方法,该方法是 将表单元素数组或者对象序列化。是.serialize()的核心方法,
obj:数组或jQuery对象会按照name/value对进行序列化,普通对象按照key/value对进行序列化。
traditional:是否使用传统的方式浅层序列化。
jQuery 代码:
var params = { width:1680, height:1050 };
var str = jQuery.param(params);
$("#results").text(str);
结果:
width=1680&height=1050
Action中List的定义:
通过使用param方法的处理,在action中ids的类型不管是数组还是list都能够正确的接收到这些id了。
private ArrayList<Integer> ids;
ps:一定不要忘了setter方法!