SpringMVC怎么获取前台传来的数组
答案:2 悬赏:30
解决时间 2021-02-20 14:55
- 提问者网友:斯文败类
- 2021-02-19 17:40
SpringMVC怎么获取前台传来的数组
最佳答案
- 二级知识专家网友:何以畏孤独
- 2021-02-19 18:17
在使用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);
}
经过测试: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);
}
全部回答
- 1楼网友:陪我到地狱流浪
- 2021-02-19 19:49
前端假设使用如下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> });
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯