当前位置: 首页 > news >正文

SpringMVC接收集合页面参数

SpringMVC接收集合页面参数

        Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则Spring MVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合。以下列举接收List<String>、List<User>、List<Map<String,Object>>、User[]、User(bean里面包含List)几种较为复杂的集合参数示例:

接收List<String>集合参数:

1、页面js代码:

var idList = new Array();  
idList.push(“1”);   
idList.push(“2”);   
idList.push(“3”);  
var isBatch = false;  
$.ajax({  
    type: "POST",  
    url: "<%=path%>/catalog.do?fn=deleteCatalogSchemes",  
    dataType: 'json',  
    data: {"idList":idList,"isBatch":isBatch},  
    success: function(data){  
        …  
    },  
    error: function(res){  
        …  
    }  
});  

 2、Controller方法:

@Controller  
@RequestMapping("/catalog.do")  
public class CatalogController {  
  
    @RequestMapping(params = "fn=deleteCatalogSchemes")  
    @ResponseBody  
    public AjaxJson deleteCatalogSchemes(@RequestParam("idList[]") List<String> idList,Boolean isBatch) {  
            …  
    }  
}  

 接收List<User>、User[]集合参数:

 1、User实体类:

public class User {  
        private String name;   
    private String pwd;  
    //省略getter/setter  
}  

2、页面js代码:

var userList = new Array();  
userList.push({name: "李四",pwd: "123"});   

userList.push({name: "张三",pwd: "332"});   

$.ajax({  

    type: "POST",  
    url: "<%=path%>/catalog.do?fn=saveUsers",  
    data: JSON.stringify(userList),//将对象序列化成JSON字符串  
    dataType:"json",  
    contentType : 'application/json;charset=utf-8', //设置请求头信息  
    success: function(data){  

    },  

    error: function(res){  

    }  

});  

3、Controller方法:

@Controller  
@RequestMapping("/catalog.do")  
public class CatalogController {  
  
    @RequestMapping(params = "fn=saveUsers")  
    @ResponseBody  
    public AjaxJson saveUsers(@RequestBody List<User> userList) {  
        …  
    }  
}  

    如果想要接收User[]数组,只需要把saveUsers的参数类型改为@RequestBody User[] userArray就行了。

接收List<Map<String,Object>>集合参数:

 1、页面js代码(不需要User对象了):

var userList = new Array();  
userList.push({name: "李四",pwd: "123"});   
userList.push({name: "张三",pwd: "332"});   
$.ajax({  
    type: "POST",  
    url: "<%=path%>/catalog.do?fn=saveUsers",  
    data: JSON.stringify(userList),//将对象序列化成JSON字符串  
    dataType:"json",  
    contentType : 'application/json;charset=utf-8', //设置请求头信息  
    success: function(data){  
        …  
    },  
    error: function(res){  
        …  
    }  
});  

2、Controller方法:

@Controller  
@RequestMapping("/catalog.do")  
public class CatalogController {  
  
    @RequestMapping(params = "fn=saveUsers")  
    @ResponseBody  
    public AjaxJson saveUsers(@RequestBody List<Map<String,Object>> listMap) {  
        …  
    }  
}  

 接收User(bean里面包含List)集合参数:

 1、User实体类:

public class User {  
    private String name;   
    private String pwd;  
    private List<User> customers;//属于用户的客户群  
    //省略getter/setter  
}  

2、页面js代码:

var customerArray = new Array();  
customerArray.push({name: "李四",pwd: "123"});   
customerArray.push({name: "张三",pwd: "332"});   
var user = {};  
user.name = "李刚";  
user.pwd = "888";  
user. customers = customerArray;  
$.ajax({  
    type: "POST",  
    url: "<%=path%>/catalog.do?fn=saveUsers",  
    data: JSON.stringify(user),//将对象序列化成JSON字符串  
    dataType:"json",  
    contentType : 'application/json;charset=utf-8', //设置请求头信息  
    success: function(data){  
        …  
    },  
    error: function(res){  
        …  
    }  
});  

  3、Controller方法:

@Controller  
@RequestMapping("/catalog.do")  
public class CatalogController {  
  
    @RequestMapping(params = "fn=saveUsers")  
    @ResponseBody  
    public AjaxJson saveUsers(@RequestBody User user) {  
        List<User> customers = user.getCustomers();  
        …  
    }  
}  

 

转载于:https://www.cnblogs.com/kuoAT/p/7002131.html

相关文章:

  • JSR 303 - Bean Validation 简单介绍及用法
  • mysql5.6.36简单配置主从复制
  • 安装Discuz
  • 玩转Android Camera开发(三):国内首发---使用GLSurfaceView预览Camera 基础拍照demo
  • 学习笔记-RTOS任务创建
  • man syslog | col -b syslog.txt
  • python---数据类型---字典
  • 逆向及修复最新iOS版少数派客户端的闪退bug
  • 开放产品开发(OPD):OPD框架
  • Folder2Iso - Download
  • vue2.0 实现click点击当前li,动态切换class
  • angular2 简述
  • elk的tar.gz的安装
  • 《大数据算法》一2.4 数组有序的判定算法
  • 给vs2015添加EF
  • ERLANG 网工修炼笔记 ---- UDP
  • MaxCompute访问TableStore(OTS) 数据
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • sublime配置文件
  • SwizzleMethod 黑魔法
  • Terraform入门 - 1. 安装Terraform
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 构建工具 - 收藏集 - 掘金
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 事件委托的小应用
  • 详解移动APP与web APP的区别
  • 用 Swift 编写面向协议的视图
  • 优化 Vue 项目编译文件大小
  • Nginx实现动静分离
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #{}和${}的区别?
  • (23)Linux的软硬连接
  • (5)STL算法之复制
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Java数据结构)ArrayList
  • (多级缓存)缓存同步
  • (二)PySpark3:SparkSQL编程
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)ORM
  • (转)平衡树
  • (转载)Google Chrome调试JS
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .NET框架
  • .Net小白的大学四年,内含面经
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [20150904]exp slow.txt
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [acm算法学习] 后缀数组SA