SpringMVC接收复杂集合对象(参数)代码示例
作者:jxd_zxf 发布时间:2023-01-29 18:33:51
SpringMVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype(MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则SpringMVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合。以下列举接收List<String>、List<User>、List<Map<String,Object>>、User[]、User(bean里面包含List)几种较为复杂的集合参数示例:
接收List<String>集合参数:
1、页面js代码:
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方法:
Java代码
@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实体类:
Java代码
public class User {
private String name;
private String pwd;
//省略getter/setter
}
2、页面js代码:
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方法:
Java代码
@Controller
@RequestMapping("/catalog.do")
public class CatalogController {
@RequestMapping(params = "fn=saveUsers")
@ResponseBody
public AjaxJson saveUsers(@RequestBody List<User> userList) {
…
}
}
如果想要接收User[]数组,只需要把saveUsers的参数类型改为@RequestBodyUser[]userArray就行了。
接收List<Map<String,Object>>集合参数:
1、页面js代码(不需要User对象了):
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){
…
}
});
2、Controller方法:
Java代码
@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实体类:
Java代码
public class User {
private String name;
private String pwd;
private List<User> customers;//属于用户的客户群
//省略getter/setter
}
2、页面js代码:
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方法:
Java代码
@Controller
@RequestMapping("/catalog.do")
public class CatalogController {
@RequestMapping(params = "fn=saveUsers")
@ResponseBody
public AjaxJson saveUsers(@RequestBody User user) {
List<User> customers = user.getCustomers();
…
}
}
总结
SpringMVC * 实现监听session是否过期详解
SpringMVC开发restful API之用户查询代码详解
SpringMVC使用MultipartFile 实现异步上传方法介绍
如有不足之处,欢迎留言指出。
来源:http://jxd-zxf.iteye.com/blog/2072300
猜你喜欢
- 1.在实体类中添加@TableId注解:2.在navicat中设置id自动增长:3.测试一下,当我们再次插入的时候,就会看到id4.对注解中
- Flyweight定义:避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。为什么使用共享模式/享元模式面向对象语言的
- 本文实例为大家分享了java实现递归菜单树的具体代码,供大家参考,具体内容如下1.表结构SET FOREIGN_KEY_CHECKS=0;-
- 本文实例讲述了Java简单验证身份证功能。分享给大家供大家参考,具体如下:package org.cxy.csdn.example;impo
- 一、问题重现1.配置文件spring: #DataSource数据源 datasource: &nbs
- 快速排序过程没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”!光听这个名字是不是就觉得很高端呢。假设我们现在对“52 39 67
- 前言本文主要给大家介绍了关于Spring Boot优化内嵌Tomcat的相关内容,分享出来供大家参考学习,下面话不多说了,来一看看详细的介绍
- 这篇文章主要介绍了springmvc如何使用POJO作为参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题,我按照这思路去大概实现了一下。1.使用ht
- 这是进行Java Web开发必备的一个过程,仅供新手参考,高手可以忽略!JDK 和 JRE 的区别JRE(Java Runtime Envi
- 在线用户使用HttpSessionListener * 统计 每当一个session会话建立 在线用户人数+1每当一
- 需求是需要在TextView前端加入一个标签展示。最终效果图如下:根据效果图,很容易就能想到使用SpannableStringBuilder
- Zookeeper和Eureka哪个更好?1、CAP理论一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求C:数据一致性
- 点击此处:官网下载 根据自己的系统 ,下载相应的JDK版本。1. JDK1.8安装1.双击下载的安装包(.exe文件),进行安装。2.点击“
- 前言在日常开发中,除了修改请求参数、设置响应header,响应body外,还有一种需求就是url重新,或者是修改url,这里简述一下怎么在z
- 什么是冒泡排序冒泡排序指重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从小到大)错误就把他们交换过来。走访元素的工作是重复
- 摘要:Java8通过Function获取字段名,解决硬编码,效果类似于mybatis-plus的LambdaQueryWrapper。本文总
- 实现要求1、使用Java图形界面组件设计软件,界面如图所示。2、软件能够满足基本的“加、减、乘、除"等运算要求。3、程序代码清晰,
- 一、BufferedImage类介绍生成验证码图片主要用到了一个BufferedImage类,如下:创建一个DrawImage Servle
- Maven打包没有指定主类在使用IDEA开发项目的时候经常会遇到使用Maven打包项目(打成jar包或者zip包),但是之前不太清楚打包插件