中易网

SpringMVC怎么获取前台传来的数组

答案:2  悬赏:30  
解决时间 2021-02-20 14:55
SpringMVC怎么获取前台传来的数组
最佳答案
在使用SpringMVC时,我们想传递数组引用类型,SpringMVC对数组传递有些限制:
经过测试:SpringMVC支持一维数组的参数传递,不支持多维数组的参数传递,如果想传递多维数组,那么我们只好改用其他的办法如:1、将多维数组拆成一维数组;2、将多维数组改为集合传递;3、或者改为字符串,接收时间处理一下等等,4、或者将所有数组中的值拼接传递(例如:data=1&data=2&data=3,代表三个数组的值)方法很灵活。
SpringMVC传递一维数组:传递数组类型时,需要在@requestParam()中添加value,否则会出现HTTP Status 400 - Required long[] parameter 'data' is not present错误。
例如: @RequestParam(value = "data[]")long[] data
前端请求:
var dataArr = new Array();
for(var i = 0; i < 10; i++){
dataArr.push(i);
}
全部回答
前端假设使用如下url进行ajax请求:假http://ip:port/ap/aa.jsp?a=1&a=2<br>    或者,使用如下表单提交:<br>    <form action="" method="post"><br><input name="a" type="text" value="1"><br><input name="a" type="text" value="2"><br>    <form><br>然后你在 java里面写这样的string[] a = arg0.getparametervalues("a")代码 , 那么java里面的这个a的字符集合里面就是[1,2]<br><br>2、后端也可以使用springmvc的如下方式获取:<br>public string xxx(@requestparam("a") string[] params){<br>..<br>}<br><br>2、使用springmvc 的requestbody接受ajax传来的数组、json对象:<br>1)controller:<br><br>[java] view plain copy <br>public resultmessage deleteconbinecode(@requestbody long[] id) {  <br>    map querymap = new hashmap();  <br>    querymap.put("id", id);  <br>    try {  <br>    combinecodeservice.deleteconbinecode(querymap);  <br>    return new resultmessage(0, "删除成功!");  <br>    } catch (exception e) {  <br>    e.printstacktrace();  <br>    logger.error(e.getmessage());  <br>    return new resultmessage(-1, "删除失败!");  <br>    }  <br>    }  <br><br>2)前端:<br><br>[javascript] view plain copy <br>var ids = [];  <br>    for(var i=0;i<rows.length;i++){  <br>    alert(rows[i].id);  <br>    ids.push(rows[i].id);  <br>    }  <br>    $.ajax({  <br>    type : "post",  <br>    contenttype : "application/json;charset=utf-8",  <br>    url : "<%=basepath %>combinecode/deleteconbinecode",  <br>    datatype : "json",  <br>    processdata : false,  <br>    data : $.tojsonstring(ids),  <br>    success : function(_data) {  <br>    if(_data.status==0) {  <br>    $("#code_grid").datagrid('reload');  <br>    }  <br>    }  <br>    });  <br><br>实例二:<br><br>1)java<br><br>[java] view plain copy <br>public class ajaxcontroller {  <br><br>      <br>    @requestmapping(value="jsonpost", method=requestmethod.post, consumes="application/json")  <br>    @responsebody  <br>    public user jsonpost(@requestbody user user) {  <br>    system.out.println("ajax json post");  <br>    system.out.println(user.getname());  <br>    system.out.println(user.getpassword());  <br>    user.setname("李四");  <br>    user.setpassword("100");  <br>    return user;  <br>    }  <br>}  <br><br>2)前端:<br><br>[javascript] view plain copy <br>var user = {};  <br>    user.name = $("#name").val();  <br>    user.password = $("#password").val();  <br>    var jsonstr = json.stringify(user);  <br>    //var json2object = json.parse(jsonstr);  <br>    $.ajax({  <br>    type : "post",  <br>    contenttype : "application/json;charset=utf-8",  <br>    url : "jsonpost",  <br>    datatype : "json",  <br>    processdata : false,  <br>    data : jsonstr,  <br>    success : function(msg) {  <br>    //javascript已自动将返回的json数据转为对象了  <br>    alert("success:"+msg.name+"---"+msg.password);  <br>    },  <br>    error : function() {  <br>    alert("try again!");  <br>    }  <br>    });
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如果没有绘画功底,那还能成为一名CG设计师么
锦帘阁精品布艺地址在什么地方,想过去办事
为什么拉钩还要上吊?
昨晚上我睡觉,似梦非梦的,感觉有一双非常灵
赢佳通讯店怎么去啊,有知道地址的么
生理盐水怎么洗涤的红细胞
之前看了崔神崔玉涛的直播,安利的Lifeline C
我网上下了个视频,是wma格式的,电脑上可以看,
深圳会展中心是在罗湖还是福田?
松木家具地址有知道的么?有点事想过去
谁知道哪个软件更新电视剧最快的?
Womens Day什么意思
荷香咖喱屋地址在什么地方,想过去办事
中国银行长城环球通信用卡激活时设置的查询密
目前比较好的U盘PE系统是什么?(最新的)
推荐资讯
做一个棱长0.9米的正方形不锈钢框架,需要多长
梦到死去的太爷,预示着什么?
东雄楼在哪里啊,我有事要去这个地方
工行的贷记卡透支了还可以在商城分期付款,吗
雅吉时尚大酒店阳光100店停车场地址在哪,我
土地资源管理专业的学生可以考取的证有哪些?
户口学籍同辽宁省但不在同市高考怎样报名
注塑成型关于塑胶透明部品出现黑色烧焦怎样处
盘锦佳缘米业地址在什么地方,想过去办事
合肥地区驾校体检不合格会上传到驾管所吗?
如何安装Micxosoft office
驾照,每年考几次?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?