springboot 传List参数
var list=[];
list.push({
"id":1,
"type":2,
});
list.push({
"id":2,
"type":3,
});
this.$http.post("/demo/testListParam",{"jsonStr":JSON.stringify(list),"id":parseInt(this.id),"reason":this.reason} , {
}).then(res => {
if (res.resultCode == 200 ) {
console.log("data:"+res.data);
} else {
setTimeout(() => {
this.instance("error", "提示", res.message);
}, 500);
}
});
2、controller
通过String拿到json字符串,再将json字符串转为List.
StAdjust类有字段id、reason

var taskList = ["123","456"];
var params = {
taskList: taskList
}; $.ajax({
type: "PUT",
dataType: "json",
url: "/client/update",
data: params,
success: function (msg) {
}
});
1 @RequestMapping(value = "/update", method = RequestMethod.PUT)
2 @ResponseBody
3 public JSONResult updateClient(Client client, @RequestParam(value = "taskList[]") List<String> taskList) {
4 logger.debug("Yufan taskList={}", taskList);
5 return JSONResult.ok();
6 }
发送的参数Json数据:
{"id":1,
"shiftDetails":[{"id":1,"lineId":2}],
"broadcasts":[{"id":1,"lineId":1,"imgPath":"TEST1"},
{"id":2,"lineId":2,"imgPath":"TEST2"}]
}
Controller类:
@Controller
@RequestMapping("/travelLine")
public class TravelLineController {
@RequestMapping("/insertTest")
@ResponseBody
public Json insertTest(@RequestBody TravelLineDomain tl) {
Json j = new Json();
j.setData(tl);
return j;
}
}
TravelLineDomain实体类:
@Table(name = "t_travel_line")
public class TravelLineDomain{
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
private List<ShiftDetailDomain> shiftDetails;
private List<BroadcastDomain> Broadcasts;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<ShiftDetailDomain> getShiftDetails() {
return shiftDetails;
}
public void setShiftDetails(List<ShiftDetailDomain> shiftDetails) {
this.shiftDetails = shiftDetails;
}
public List<BroadcastDomain> getBroadcasts() {
return Broadcasts;
}
public void setBroadcasts(List<BroadcastDomain> broadcasts) {
Broadcasts = broadcasts;
}
}
springMVC通过ajax传递参数list对象或传递数组对象到后台
前台使用ajax
后台使用springMVC
传递的参数是N多个对象
而文件上传服务器需要特殊处理,普通的post请求(Content-Type不是application/x-www-form-urlencoded)数据格式不固定,不一定是名值对的方式,所以服务器无法知道具体的处理方式,所以只能通过获取原始数据流的方式来进行解析。
---------------------
jsp文件:
$("#saveuddd").click(function(){
var saveDataAry=[];
var data1={"name":"test","password":"gz"};
var data2={"name":"ququ","password":"gr"};
saveDataAry.push(data1);
saveDataAry.push(data2);
$.ajax({
type:"POST",
url: basePath + "/user/saveUser",
dataType:"json",
contentType:"application/json", // 指定这个协议很重要
data:JSON.stringify(saveDataAry),
//只有这一个参数,json格式,后台解析为实体,后台可以直接用
success:function(data){
//do something
}
})
});
java文件
@RequestMapping(value = "saveUser", method = {RequestMethod.POST })
@ResponseBody //此时的user是map数据,并没有解析为bean 不建议使用
public void savu(User[] users){
System.out.println(users) ;
}
使用如下方法,可以使用bean
@RequestMapping(value = "saveUser", method = {RequestMethod.POST })
@ResponseBody
public void saveu( @RequestBody User[] users ){
System.out.println(users.getName()) ; // 此时的user是实体bean
}
---------------------
第二种方式 传递的键值对
jsp同上
另外一种:
@RequestMapping(value = "saveUser", method = {RequestMethod.POST })
@ResponseBody
public void saveu( @RequestBody List<Map<String,String>> users ){
// spring MVC只能解析外层的json格式,内部的bean转化为Map格式的键值对,需要对map解析
List<User> userList = new ArrayList<User>();
for(Map<String,String> map : users){
User u = new User();
u.setName(map.get("name"));
u.setPassword(map.get("password"));
userList.add(u);
}
//
---------------------
第三种方式
能够传递多个参数,但是每一个参数都是字符串(bean类型的数据会转化为JSON格式的字符串)
jsp文件
$("#saveuddd").click(function(){
var saveDataAry=[];
var data1={"name":"test","password":"gz"};
var data2={"name":"ququ","password":"gr"};
saveDataAry.push(data1);
saveDataAry.push(data2);
$.ajax({
type:"POST",
url: basePath + "/user/saveUser",
dataType:"json",
data:{users:JSON.stringify(saveDataAry),aa:"ddd"},
//可以传递多个参数
//此时的users内容与另外一个参数:aa 的内容一起传递,所以后台解析为字符串
//后台接收的users内容:[{"name":"test","password":"gz"},{"name":"ququ","password":"gr"}]
//后台接收的 aa 内容:"ddd"
success:function(data){
// do something
}
})
});
java文件
@RequestMapping(value = "saveUser", method = {RequestMethod.POST})
@ResponseBody
public void saveu( String users , String aa ){
System.out.println(users) ;
}
---------------------
=========================================================================================
js前端ajax提交list集合参数至后端
方法一
var orderNosList = new Array();
var rows = $("#dg_linkOrder").datagrid("getChecked");
if(rows.length < 1){
$('#error').dialog('open').dialog('center').dialog('setTitle', '错误提示');
$('#error').text("请选择一条数据");
}else {
for (var i = 0; i < rows.length; i++) {
orderNosList[i] = rows[i].orderNo;
}
var params = {
reserveOrderNoList:orderNosList
};
$.ajax({
url : api.LINK_ORDER_RESERVE_RETRY,
data : JSON.stringify(params),
type : 'POST',
contentType: "application/json",
dataType : 'json',
success : function(res) {
var str = '';
$(res.reserveFlowList).each(function(i, obj){
var responseCode = obj.responseCode;
var orderNo = obj.reserveFlow.orderNo;
if (responseCode == 0) {
str += "订单号为"+ orderNo +"成功<br/>";
} else {
str += "订单号为"+ orderNo + obj.responseMsg +"<br/>"
}
});
$('#error2').dialog('open').dialog('center').dialog('setTitle', '提示');
$('#error2').html(str);
// 刷新列表
linkOrder.unfresh_LinkOrder();
}
});
}
@RequestMapping("/http/pss/reserveOrderRetry")
@ResponseBody
public Object reserveOrderRetry(@RequestParam("reserveOrderNoList")List<String> reserveOrderNoList) {
return service.reserveOrderRetry(reserveOrderNoList);
}
方法二
var demo = new Object();
demo.name="1";
demo.id="2";
var demo2 = new Object();
demo2.name="1";
demo2.id="2";
var conditons = [];
conditons.push(demo);
conditons.push(demo2);
$(function(){
$.ajax({
type:'post',
url:'/http/pss/demo',
contentType: "application/json",
data:{name:"123",conditions:JSON.stringify(conditons)},
dataType : 'json',
success:function(data){
console.log(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown){
alert("error");
}
});
});
@RequestMapping("/http/pss/reserveOrderRetry")
@ResponseBody
public Object reserveOrderRetry(@RequestParam("conditions")List<Demo> conditions,
@RequestParam("name")String name) {
}
===================================================================================================================
===================================================================================================================
第一种:
1.新增类,其中有属性为该对象的集合
public class SettingModel {
private List<Setting> sets;
public final List<Setting> getSets() {
return sets;
}
public final void setSets(List<Setting> sets) {
this.sets = sets;
}
@Override
public String toString() {
return "SettingModel [sets=" + sets + "]";
}
}
2.表单字段name属性值为数组形式:
<form action="/user/submitUserList_2" method="post">
ID:<input type="text" name="users[0].id"><br/>
Username:<input type="text" name="users[0].name"><br/>
Password:<input type="text" name="users[0].pwd"><br/><br/> ID:<input type="text" name="users[2].id"><br/>
Username:<input type="text" name="users[2].name"><br/>
Password:<input type="text" name="users[2].pwd"><br/><br/>
<input type="submit" value="Submit">
</form>
3.后台接收:
@RequestMapping("/update")
public void update(SettingModel users){
System.out.println(sets);
}
第二种:
1.ajax请求,POST请求、'Content-Type' : 'application/json;charset=utf-8'、data:json(例如:[{"id":"1","content":"14"},{"id":"2","content":"测试修改2"}])
$.ajax({
url:'/update',
type:'POST',
headers : {
'Content-Type' : 'application/json;charset=utf-8'
},
dataType:"json",
data:datastr,//datastr=JSON.stringify(datastr);转换为JSON格式
success: function(data){
alert('111');
}
});
2.后台接收:
@RequestMapping(value="/update")
public void update(@RequestBody List<Setting> sets){
System.out.println(sets);
}
springboot 传List参数的更多相关文章
- SpringBoot中使用切面的每次传的参数,进行解析,验签,并返回解码后的参数
目的,在每次请求的时候,对每次传的参数,进行解析,验签,并返回解码后的参数, 以json传递: 例子背景: IOT平台提供对外可访问的接口, 需要对所有参数的传递做到 不泄露.认证的目的:所以需要在每 ...
- SpringBoot接收前端参数的三种方法
都是以前的笔记了,有时间就整理出来了,SpringBoot接收前端参数的三种方法,首先第一种代码: @RestController public class ControllerTest { //访问 ...
- springboot 获取控制器参数的几种方式
这里介绍springboot 获取控制器参数有四种方式 1.无注解下获取参数 2.使用@RequestParam获取参数 3.传递数组 4.通过URL传递参数 无注解下获取参数无注解下获取参数,需要控 ...
- 测试开发专题:如何在spring-boot中进行参数校验
上文我们讨论了spring-boot如何去获取前端传递过来的参数,那传递过来总不能直接使用,需要对这些参数进行校验,符合程序的要求才会进行下一步的处理,所以本篇文章我们主要讨论spring-boot中 ...
- SpringBoot 如何进行参数校验,老鸟们都这么玩的!
大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...
- SpringBoot 如何进行参数校验
为什么需要参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数进行校验,例如登录的时候需要校验用户名和密码是否为空,添加用户的时候校验用户邮箱地址.手机号码格式是否正确. ...
- 从js向Action传中文参数出现乱码问题的解决方法
Action获取jsp表单中的中文参数,只要整个项目都采用UTF-8编码格式都不会出现乱码问题:但JSP中用到JS,并从JS向Action传中文参数,就会出现中文乱的现象 做项目的时候,发现A ...
- (转) jsp页面 URL传中文参数到Action里面出现乱码
jsp页面 URL传中文参数到Action里面出现乱码,方法如下: 第一种:在Action中用 new String(str.getBytes("ISO8859_1"), &quo ...
- 百度上传工具webuploader,图片上传附加参数
项目中需要上传视频,图片等资源.最先做的是上传图片,开始在网上找了一款野鸡插件,可以实现图片上传预览(无需传到后台).但是最近这个插件出了莫名的问题,不易修复,一怒之下,还是决定找个大点的,靠谱的插件 ...
随机推荐
- xl2tpd[26104]: Maximum retries exceeded for tunnel 33925. Closing
Sep 5 14:31:50 root charon: 13[ENC] generating QUICK_MODE request 3930082374 [ HASH ]Sep 5 14:31:5 ...
- [转]PhpStorm中如何使用Xdebug工具,入门级操作方法(亲测有效)
0 前言 网上试过很多方案,有的根本无效,有的是有效一段时间后失效,然而这个方法是一直有效果,所以留底记录一下 1 简介 PhpStorm是一个轻量级且便捷的PHP IDE,其提供的智能代码补全,快速 ...
- VBS计时器
用VBS实现一个以分钟为单位的计时器: rem msgbox now 'now is the system para msgbox "Timer",,"CreatedBy ...
- 大数据mapreduce全局排序top-N之python实现
a.txt.b.txt文件如下: a.txt hadoop hadoop hadoop hadoop hadoop hadoop hadoop hadoop hadoop hadoop hadoop ...
- Confluence 6 修改日志文件的大小数量和级别
修改日志文件的大小和数量 在默认的情况下,Confluence 将会保持 5 个日志文件,每一个日志文件的大小超过 20 MB 的时候将会被重写. 你可以修改默认日志文件的大小和数量,通过编辑 < ...
- 基于 Confluence 6 数据中心的 SAML 单点登录设置你的身份提供者
如果你希望 Confluence 提供 SSO,将需要将 Confluence 添加到你的 IdP 中.一些后续的步骤将会与你的 IdP 有关,但是你通常需要: 在你的 IdP 中定义一个 'appl ...
- Java的动手动脑(四)
日期:2018.10.18 星期四 博客期:019 Part1:回答为啥会报错 答案:当然会报错啦!因为平常的编程过程中,系统会对我们写的类自动生成一个默认无参形式的构造方法,类似于C++中的体制!这 ...
- 【kafka】生产者速度测试
非常有用的参考博客:http://blog.csdn.net/qq_33160722/article/details/52903380 pykafka文档:http://pykafka.readthe ...
- HTML&javaSkcript&CSS&jQuery&ajax(七)
’一.HTML5 实例 <video width="430" controls> <source src="mov_nnn.mp4" t ...
- 使用sysbench 0.5 对mysql 进行性能、压力测试
sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.目前sysbench代码托管在launchpad上,项目地址:https://launc ...