欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ajax从JSP传递对象数组到后台的方法

程序员文章站 2022-06-17 14:14:27
今日工作中遇到了需要从jsp传递对象数组到后台的需求,网上辗转找了很多资料,终于解决。苦于网上很多资料不全,故记录下详细解决过程。如下: jsp: functi...

今日工作中遇到了需要从jsp传递对象数组到后台的需求,网上辗转找了很多资料,终于解决。苦于网上很多资料不全,故记录下详细解决过程。如下:

jsp:

function addaccount(){
		debugger;
		var html = '';
		var ary = $("#match_account").find("p");
		var _list = new array();
		
		if(ary.length){
			for(var i = 0,len = ary.length;i < len;i ++){
				var account = new object();
				html += '<li class="fl mb8" data-id="'+ary[i].id+'" data-sort="0">';
				html += '<span class="mr8 display-ib" style="background:#eee;padding:0px 5px 6px 5px">';
				html += '<span data-id="">'+ary[i].innerhtml+'</span>';
				html += '<a onclick="deleteaccount(this);" href="javascript:;" rel="external nofollow" class="js-btn-remove-tag ml4" style="vertical-align:5px;color:#999;" title="删除">x</a>';
				html += '</span>';
				html += '</li>';
				
				account.accountid = ary[i].id; 
				account.account = ary[i].innerhtml; 
				_list.push(account);
			}
			
			$.ajax({
				type: "post",
				url: "${ctx}/companyaccount/addcontributeaccounts",
				data : {list : json.stringify(_list)},
				async: false,
				success: function (json) {
					var result = json.obj.result;
					if(result != 1){
						layer.error('添加账号失败.');
					}
				}
			});
		}
		
		$("#contribute_account").append(html);
	}

关键之处有三:

一,定义数组

var _list = new array();

二,定义对象,并迭代添加对象属性,最后push进数组

var account = new object();
account.accountid = ary[i].id; 
account.account = ary[i].innerhtml; 
_list.push(account);

三,提交时转换数组对象

data : {list : json.stringify(_list)}

后台java:

/**
	 * 添加投稿账号
	 */
	@requestmapping(value = "addcontributeaccounts")
	@responsebody
	public jsonresult addcontributeaccounts(string list) {
		jsonarray ary = jsonarray.fromobject(list);
		if(ary != null && ary.size() > 0){
			list<regioncontributeaccount> accountlist = (list<regioncontributeaccount>)jsonarray.tocollection(ary, 
					regioncontributeaccount.class);
			for(regioncontributeaccount account : accountlist){
				companyaccountservice.insertcontributeaccount(account);
			}
		}
		
		map<string, object> obj = new hashmap<string, object>();
		
		obj.put("result", 1);
		
		return jsonresult.success(obj);
	}

后台要点有二,

一,转换ary数组

jsonarray ary = jsonarray.fromobject(list);

二,数组转自定义java对象

list<regioncontributeaccount> accountlist = (list<regioncontributeaccount>)jsonarray.tocollection(ary, 
  regioncontributeaccount.class);

自此,便打通前后端任督二脉。

以上这篇ajax从jsp传递对象数组到后台的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。