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代码:

  1. var idList = new Array();
  2. idList.push(“1”);
  3. idList.push(“2”);
  4. idList.push(“3”);
  5. var isBatch = false;
  6. $.ajax({
  7. type: "POST",
  8. url: "<%=path%>/catalog.do?fn=deleteCatalogSchemes",
  9. dataType: 'json',
  10. data: {"idList":idList,"isBatch":isBatch},
  11. success: function(data){
  12. },
  13. error: function(res){
  14. }
  15. });

2、Controller方法:

  1. @Controller
  2. @RequestMapping("/catalog.do")
  3. public class CatalogController {
  4. @RequestMapping(params = "fn=deleteCatalogSchemes")
  5. @ResponseBody
  6. public AjaxJson deleteCatalogSchemes(@RequestParam("idList[]") List<String> idList,Boolean isBatch) {
  7. }
  8. }
  • 接收List<User>、User[]集合参数:

1、User实体类:

  1. public class User {
  2. private String name;
  3. private String pwd;
  4. //省略getter/setter
  5. }

2、页面js代码:

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

3、Controller方法:

  1. @Controller
  2. @RequestMapping("/catalog.do")
  3. public class CatalogController {
  4. @RequestMapping(params = "fn=saveUsers")
  5. @ResponseBody
  6. public AjaxJson saveUsers(@RequestBody List<User> userList) {
  7. }
  8. }

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

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

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

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

2、Controller方法:

  1. @Controller
  2. @RequestMapping("/catalog.do")
  3. public class CatalogController {
  4. @RequestMapping(params = "fn=saveUsers")
  5. @ResponseBody
  6. public AjaxJson saveUsers(@RequestBody List<Map<String,Object>> listMap) {
  7. }
  8. }
  • 接收User(bean里面包含List)集合参数:

1、User实体类:

  1. public class User {
  2. private String name;
  3. private String pwd;
  4. private List<User> customers;//属于用户的客户群
  5. //省略getter/setter
  6. }

2、页面js代码:

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

3、Controller方法:

  1. @Controller
  2. @RequestMapping("/catalog.do")
  3. public class CatalogController {
  4. @RequestMapping(params = "fn=saveUsers")
  5. @ResponseBody
  6. public AjaxJson saveUsers(@RequestBody User user) {
  7. List<User> customers = user.getCustomers();
  8. }
  9. }

Spring MVC在接收复杂集合参数的更多相关文章

  1. spring mvc随便接收list<objeect>参数

    在后台设定一个类,PersonList类: public class PersonList {private List<User> user; public List<User> ...

  2. Spring MVC同时接收一个对象与List集合对象

    原:https://blog.csdn.net/u011781521/article/details/77586688/ Spring MVC同时接收一个对象与List集合对象 2017年08月25日 ...

  3. Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    阅读目录 1. 通过HttpServletRequest获得请求参数和数据 2. 处理方法形参名==请求参数名 3. 如果形参名跟请求参数名不一样怎么办呢?用@RequestParam注解 4. 用实 ...

  4. 0056 Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: <!DOCTYPE html> <html> ...

  5. SpringMVC接收复杂集合参数

    Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是applica ...

  6. spring MVC 如何接收前台传入的JSON对象数组并处理

    spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json  即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...

  7. spring MVC 如何接收前台传入的JSON对象数组

    spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json  即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...

  8. 解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容

    解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容 解决方案 在 Web.xml文件中 加入以下代码 <!--解决ajax Put与Del请求无法接收到传输的内容-- ...

  9. Java-Spring MVC:JAVA之常用的一些Spring MVC的路由写法以及参数传递方式

    ylbtech-Java-Spring MVC:JAVA之常用的一些Spring MVC的路由写法以及参数传递方式 1.返回顶部 1. 常用的一些Spring MVC的路由写法以及参数传递方式. 这是 ...

随机推荐

  1. HDU1159 && POJ1458:Common Subsequence(LCS)

    Problem Description A subsequence of a given sequence is the given sequence with some elements (poss ...

  2. 使用solr报错,错误信息 include(SolrClient.php): failed to open stream: No such file or directory

    这个是因为本地没有安装php-solr的扩展导致的,安装方法(使用的是ubuntu) cd /optwget http://pecl.php.net/get/solr-1.0.2.tgztar -xv ...

  3. RHEL7和RHEL6的主要变化

    RHEL7和RHEL6的主要变化   RHEL7 RHEL6 文件系统 XFS EXT4 内核版本 3.10.x-x系列 2.6.x-x系列 内核名称 Maipo Santiago 发布时间 2014 ...

  4. 阿里云ECS安全改造:改用AWS EC2私钥方式登录

    阿里云ECS有多烂,用过AWS的人都知道,ECS有什么问题呢,简单总结一下: 1)ubuntu居然root直接访问 2)端口全开 3)WEB控制台无法定义安全组及关闭端口 4)云盾黑洞 的确用起来很糟 ...

  5. 传入字典的模型项的类型为“System.Data.Entity.DynamicProxies.

    今天做东西遇到了,这样的一个问题,最后了半天才找到问题所在,现在给大家分享一下问题所在: 传入字典的模型项的类型为“System.Data.Entity.DynamicProxies.doctorUs ...

  6. linux free命令建检查内存状态

    前端时间发现博客服务器物理内存使用过高问题,就是使用linux free命令检查的,这次详细介绍下这个命令. 命 令: free 功能说明:显示内存状态.语 法: free [-bkmotV][-s  ...

  7. MySQL 行子查询

    MySQL 行子查询 行子查询是指子查询返回的结果集是一行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集. 一个行子查询的例子如下: SELECT * FROM table1 WH ...

  8. zxing生成和解析二维码

    今天忙了一天的二维码,用了QRcode和ZXing两个开源包.结果发现 ZXing比QRcode更好用一些,它直接可以定义二维码生成图案的大小,而QRcode生成的二维码是根据二维码包含的内容多少来定 ...

  9. [转]C++智能指针的创建

    zero 坐在餐桌前,机械的重复“夹菜 -> 咀嚼 -> 吞咽”的动作序列,脸上用无形的大字写着:我心不在焉.在他的对面坐着 Solmyr ,慢条斯理的吃着他那份午餐,维持着他一贯很有修养 ...

  10. [转]SGI STL 红黑树(Red-Black Tree)源代码分析

    STL提供了许多好用的数据结构与算法,使我们不必为做许许多多的重复劳动.STL里实现了一个树结构-Red-Black Tree,它也是STL里唯一实现的一个树状数据结构,并且它是map, multim ...