第一种情况:数据是基本类型或者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,否则取不到值.
分享到:
相关推荐
本教程将重点讲解如何接收ajax和form表单传递的集合参数。 一、接收Ajax传递的集合参数 1. JSON格式数据:Ajax通常使用JSON格式传递复杂数据,如集合。在JavaScript中,你可以创建一个JSON对象,将集合数据转换...
Spring MVC支持多种类型的参数,包括基本数据类型、对象、数组、集合、Map以及自定义类型。例如: - **基本数据类型**:如int、String、double等。 - **Java对象**:可以直接传递整个对象,对象的属性值与请求参数...
在SpringMVC中,处理复杂的集合参数时,需要特别注意以下几点: 1. **@RequestBody**:这个注解用于告诉Spring MVC框架,请求体中的数据应该被转化为指定类型的参数。在处理集合参数时,必须加上@RequestBody。 2....
在Spring MVC框架中,高级参数绑定是一个核心特性,它允许开发者高效地处理HTTP请求中的数据,包括多选、数组和集合等复杂类型的参数。在这个场景中,我们需要实现一个功能,让用户能够在商品列表页面上选择多个商品...
2. **配置DataSource**:在Spring的配置文件中定义DataSource bean,设置JDBC连接参数。 3. **创建Repository**:根据业务需求创建自定义的Repository接口,扩展JpaRepository或CrudRepository。 4. **编写Service**...
springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器... 参数绑定(简单类型、pojo、集合类型) 自定义参数绑定 6. springmvc和struts2区别
在SpringMVC参数绑定过程中,当客户端发送请求时,其中的key/value数据会被处理,通过参数绑定组件转化成Controller方法的形参。早期版本的SpringMVC使用`PropertyEditor`来进行字符串到Java对象的转换,而后期则...
高级参数绑定也可以将 List 绑定到控制器的方法参数上,例如使用包装类,包装类中有 List 集合。 SpringMVC 提供了多种参数绑定的方式,包括默认的参数绑定、简单类型参数绑定、POJO 类型参数绑定、包装类型参数...
SpringMVC提供了强大的数据绑定功能,可以自动将请求参数绑定到控制器方法的参数上,也可以将模型对象的属性绑定到HTML表单字段。这包括对基本类型、复杂类型以及集合类型的绑定。 7. **处理器拦截器** 处理器...
- 支持多种数据类型和参数传递,包括基本类型、String、对象、集合等。 - 使用 @RequestMapping 注解实现请求映射,简化配置。 - 字符编码过滤器确保正确处理请求和响应的字符编码。 - 自定义类型转换器,允许...
3. **SpringMVC参数绑定**:在SpringMVC中,可以使用多种方式接受JSON参数。一种常见的方法是使用@RequestParam注解,这个注解和Servlet中的request.getParameter方法有相似的功能。通过对控制器方法参数使用@...
2. **参数绑定**:SpringMVC支持多种类型的参数绑定,包括简单类型、POJO(Plain Old Java Object)、集合类型等。 3. **自定义参数绑定**:对于更复杂的需求,开发者可以通过实现自定义的参数绑定器来处理。 #### ...
6. 接收对象List集合,处理数组或集合类型的参数。 7. 接收JSON格式的请求,配合`@RequestBody`。 【文件上传】 文件上传需要: 1. 引入相关依赖,如Apache Commons FileUpload。 2. 添加文件解析器配置。 3. 编写...
《开涛Spring和SpringMVC书籍》集合包含了三部分学习资料,分别是《跟我学spring3(1-7).pdf》、《跟我学SpringMVC.pdf》以及《跟我学spring3(8-13).pdf》。这些教材由知名IT专家开涛撰写,深入浅出地讲解了Spring...
- **参数绑定**:支持绑定复杂的对象,如POJO对象、数组、集合等。 - **数据回显**:自动将模型数据回显到表单中。 - **文件上传**:支持多文件上传功能。 - **JSON数据交互**:支持通过JSON格式进行数据交互。 - **...
- **集合类型绑定**:将多个请求参数绑定到集合类型。 ##### 4.3 自定义参数绑定 对于复杂的参数绑定需求,可以通过自定义参数绑定器来实现。 #### 五、SpringMVC与Struts2的区别 - **配置方式**:SpringMVC倾向...
本学习资源集合了传智播客的课程内容,旨在帮助开发者深入理解并掌握SpringMVC和MyBatis的集成使用,构建完整的项目体系。 一、SpringMVC框架解析 SpringMVC是Spring框架的一个模块,主要处理HTTP请求和响应,提供...
### Spring MVC 无法直接接收 List 类型参数的问题详解 #### 问题背景 在 Web 开发过程中,前后端数据交互是必不可少的一部分。对于基于 Java 的 Spring MVC 框架而言,处理这种交互通常需要理解如何正确地接收前端...
在后端,我们需要遍历`MultipartFile`集合以处理每个上传的文件。 四、图片回显 图片回显是指在用户上传图片后,能够在页面上预览已上传的图片。这通常通过将图片数据转换为Base64编码,然后嵌入到HTML的`<img>`...
- 自动将HTTP请求参数绑定到Controller方法的参数上,支持集合类型的参数绑定。 5. **异常处理**: - 可以使用`@ExceptionHandler`注解定义异常处理器,或者配置`<exception-type>`元素来全局处理异常。 - `@...