第一种情况:数据是基本类型或者String
1, 直接用表单提交,参数名称相同即可;
Controller参数定义为数组类型即可.不要定义为List<String>
<form action="${pageContext.request.contextPath}/dashboard/xxx" method="post">
<input type="text" name="xxx"/><br>
<input type="text" name="xxx"/><br>
<input type="text" name="xxx"/><br>
<input type="text" name="xxx"/><br>
<input type="submit" value="tijiao"/>
</form>
@RequestMapping(value = "/xxx")
public void xxx(String[] xxx) {
System.out.println(xxx);
}
Controller中不要用List<String>接收,不然会报下面这个错org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface
2, ajax请求:
$.ajax({
url: "${pageContext.request.contextPath}/dashboard/xxx",
type: "POST",
contentType : 'application/json;charset=utf-8', //请求头一定要有
dataType:"json",
data: JSON.stringify(["aaa","bbb"]), //将Json对象转成Json字符串
success: function(data){
alert(data);
},
error: function(res){
alert(res.responseText);
}
});
@RequestMapping(value = "/xxx")
public void xxx(@RequestBody String[] xxx) {
System.out.println(xxx);
}
ajax请求时请求头contentType 申明为application/json;charset=utf-8,且type 为post, 这样请求体在body中且请求体为一个json字符串, controller中获取参数一定要加@RequestBody,表示取请求体中的所有的内容,然后转为String[], 至于形参名xxx可以任意命名,因为application/json;charset=utf-8的请求体中无参数名称
第二种情况:数据是自定义对象
public class User {
private Integer id;
private String name;
private String pwd;
//getter、setter省略
}
1, 表单提交
<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>
除了刚才公用的User类,还要封装一个User的容器类UserModel:
public class UserModel {
private List<User> users;
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public UserModel(List<User> users) {
super();
this.users = users;
}
public UserModel() {
super();
}
}
@RequestMapping(value = "/xxx")
public void xxx(UserModel users) {
List<User> userList = users.getUsers();
}
2, ajax 请求
var arr = new Array();
arr.push({id: "1", name: "李四", pwd: "123"});
arr.push({id: "2", name: "张三", pwd: "332"});
$.ajax({
url: "${pageContext.request.contextPath}/dashboard/xxx",
type: "POST",
contentType : 'application/json;charset=utf-8', //请求头一定要加
dataType:"json",
data: JSON.stringify(arr), //将Json对象序列化成Json字符串
success: function(data){
alert(data);
},
error: function(res){
alert(res.responseText);
}
});
@RequestMapping(value = "/xxx")
public void xxx(@RequestBody List<User> xxx) {
System.out.println(xxx);
}
这里可以定义成List<User>, 不会报异常.ajax中的contentType 和controller中的@RequestBody一定要加
第三种,适宜任何类型数据
用js将请求参数转为json字符串, 然后contentType 设置为application/x-www-form-urlencoded, 这种请求的请求体格式是name1=value1&name2=value2&...
var arr = new Array();
arr.push({id: "1", name: "李四", pwd: "123"});
arr.push({id: "2", name: "张三", pwd: "332"});
$.ajax({
url: "${pageContext.request.contextPath}/dashboard/xxx",
type: "POST",
contentType : 'application/x-www-form-urlencoded', //设置请求头信息
dataType:"json",
data: "xxx="+JSON.stringify(customerArray), //将Json对象序列化成Json字符串
success: function(data){
alert(data);
},
error: function(res){
alert(res.responseText);
}
});
@RequestMapping(value = "/xxx")
public void xxx(String xxx) {
System.out.println(xxx);
//用Gson或其他json包转成对象或数组
}
如果 contentType 设置为 application/json;charset=utf-8, controller参数要加@RequestBody,否则取不到值.
分享到:
相关推荐
本demo 用来写了springmvc如何接受ajax传集合以及接收form表单传集合
主要介绍了SpringMVC接收复杂集合对象(参数)代码示例,举接收List、List、List<Map>>、User[]、User(bean里面包含List)几种较为复杂的集合参数,具有一定参考价值,需要的朋友可以了解下。
SpringMVC请求参数接收 1 GET方法请求参数处理 2 表单参数 3 【非对象】- 非对象类型单个参数接收。 3 【对象】 - 对象类型参数接收。 4 【数组】 - 列表或者数组类型参数。 5 JSON参数 6 URL路径参数 6 文件上传 8 ...
springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器... 参数绑定(简单类型、pojo、集合类型) 自定义参数绑定 6. springmvc和struts2区别
springmvc框架原理(掌握) 前端控制器、处理器映射器、处理器适配器、视图解析器 springmvc入门程序 ... 参数绑定(简单类型、pojo、集合类型(明天讲)) 自定义参数绑定(掌握) springmvc和struts2区别
springmvc框架原理(掌握) 前端控制器、处理器映射器、处理器适配器、视图解析... 参数绑定(简单类型、pojo、集合类型(明天讲)) 自定义参数绑定(掌握) springmvc和struts2区别 springmvc和struts2的区别
前端使用jquery向后台传递数组类型的参数,Java后台直接通过List类型接收,会发现无法取到参数。
springmvc的概念、springmvc的运行原理(前端控制器、处理器映射器、处理器适配器、处理器、视图解析器)、同步请求的方式(ModelAndView、String、无返回值、默认的绑定值)、异步请求的注解、请求参数的封装(简单...
springmvc的高级应用 包含代码+知识点+详细解释 1. 参数绑定(集合类型) 2. 数据回显 3. 上传图片 4. json数据交互 5. RESTful支持 6. 拦截器
简单的springMVC框架集合传值学习代码,前台和后台通过参数进行数据绑定 前提: 参数名 和 表单name保持一致,前台和后台通过参数进行数据绑定 bean绑定方式
第 1章 Ssm 整合 ................................ ................................ ................................ ....................... 2 1.11.1 复制 webweb 工程 ...................................
Spring MVC传参是Spring学习中的比较容易混淆的地方,因为传参方式种类多,接受参数种类多,初学者较容易因为不懂HTTP参数传递原理,而摸不着头脑,该篇文章介绍Spring MVC参数绑定的几种方式。
SSM三部曲: 如果你读完这篇文章,... 请求参数绑定集合类型4.自定义类型转换器代码编写细节:怎么通过SpringMVC获取Servlet原生API常用注解?==@RequestParam()====@RequestBody()====@PathVariable()====HiddenHttpM
SpringBoot版本的SpringMVC+Freemarker上传案例,...有需要放开即可,另外POM也配置了相关的操作,注意,如果是单个文件IndexController的参数就不是List集合了,只需要改成单个即可,另外Controller的循环代码去掉即可
spring mvc拦截器,过滤json数据中的null值,将null变成空字符串,内含截图,及jar包
SpringMVC的相关用法主要内容@RequestMapping注解中相关参数的意义参考RequestMappingController类.Controller中方法的参数可以定义的类型统计普通常用的基本参数没有写, 介绍了一些稍微冷门但是还有点用的, 参考...
的朋友“方法引用”让你在做其他事情的过程中,可以简明地将代码或方法作为参数传递进去执 行。在本书中,你会看到这种思想出现得比预想的还要频繁:从加入作比较的代码来简单地参数 化一个排序方法,到利用新的...
2)在Headers一栏添加参数Content-Type=application/json; 已本地测试为例:对应配置图如下: 3)点击Body一栏,并选择raw,然后在对应的text区域输入要传递和添加的数据集合; 本例已两条数据位例,如下图: 其中每...
1.23 扩展SpringMVC以支持绑定JSON格式的请求参数 1.24 扩展SpringMVC以支持绑定JSON格式的请求参数 1.25 在应用层通过spring特性解决数据库读写分离 1.26 context:component-scan扫描使用上的容易忽略的use-default...
第12章Spring MVC参数绑定的验证 简单数据类型绑定 默认数据类型绑定 POJO类型 复杂数据类型绑定(数组、集合)