spring mvc 传递 list 对象

后台

	
	@RequestMapping("/aaa")
	@ResponseBody
	public Object aaa(RequestBody List<SysUser> syss){
		SysDepart model= sysDepartService.findById(guid);
		return model;
	}
	


前台

var users = new Array();
			
			var user = {};
			user.userName="aa";
			user.userGuid="1";
			users.push(user);
			
			var user1 = {};
			user1.userName="aa";
			user1.userGuid="1";
			users.push(user1);
			
			var result=JSON.stringify(users);
			
			$.ajax({
				type : 'POST',
				url : '${base}/aaa.do?guid='+ guid,
				dataType : 'json',
				contentType:"application/json",
				data:result,
				success : function(data) {

				}
			});


参考:http://blog.csdn.net/z69183787/article/details/41653843


http://jxd-zxf.iteye.com/blog/2072300



第二种方式

  <div class="main_con">
<form id="frm_test">
<input type="hidden" name="departGuid" value="110" />
<input name="departName"  type="hidden"  value="112"/>
<input type="text" name="lsUsers0].userGuid" value="SONY"><br>
        <input type="text" name="lsUsers[1].userGuid" value="MOTO"><br>
        <input type="text" name="lsUsers[2].userGuid" value="LG"><br>
</form>


    var form = $("#frm_test");
   var baseObj = form.serializeObject();

   $.ajax({
    type:'POST',
    url : '${base}/aaa.do?guid='+ guid,
    dataType : 'json',
    data:baseObj,
    success : function(data) {
    }
   });


 @RequestMapping("/queryDepartByGuid")
 @ResponseBody
 public Object aaa(String guid,SysDepart depart){
  SysDepart model= sysDepartService.findById(guid);
  return model;
 }


SysDepart类中有 List<SysUser> lsUses; 字段


第三种方式

在第二种方式的基础上修改

html那一段

这一段 换成这样也可以,不用表单

  var ooo= {"departGuid": "110", "departName": "112",
      "lsUsers[0].userGuid": "SONY",
      "lsUsers[1].userGuid": "MOTO", "lsUsers[2].userGuid": "LG"}; 
     传 ooo对象到后台。


注意 用数组渲染的方式是不对的,调试可以发现,表单输出力的 lsUsers不是数组 而是 整个 lsUsers[0].userGuid 作为 object的属性名


如下是不行的:

   var users = new Array();
   
   var user2 = {};
   user2.userGuid="1";

   var user1 = {};
   user1.userGuid="12";

   var depart={};
   depart.departGuid="sss";
   depart.lsUsers=[];
   depart.lsUsers.push(user1);
   depart.lsUsers.push(user2);



第四种方式  第三种方式的改造

表单和 数组 一起拼接到后台 depart 的 users 接受 数组
   var lsUsers = new Array();
   var user1 = {};
   user1.userGuid="123";
   lsUsers.push(user1);
   var user2 = {};
   user2.userGuid="12222";
   lsUsers.push(user2);
      
   var result = parseParam(lsUsers, "lsUsers", 0);//明细
   var form = $("#frm_test");
   var formObj = form.serialize();
   $.ajax({
    type:'POST',
    url : '${base}/aaa.do?guid='+ guid,
    dataType : 'json',
    data:formObj+"&"+result,
    success : function(data) {
    }
   });

  <div class="main_con">
<form id="frm_test">
<input type="hidden" name="departGuid" value="110" />
<input name="departName"  type="hidden"  value="112"/>
</form>


其他:

    contentType:"application/json",
    data:{guid:'3333'},

contentType 采用  application/json 的时候,data:{guid:'3333'} 这样传递 ,后台 controller String  guid是接受不到的。 要传递的话放在url中
为什么接受不到,个人认为,是  application/json  后台接受是 对象,string 不是对象,所以接受不了。如果后台有个对象 里面有guid 这个属性,应该是接收的到的。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值