SpringMVC获取集合类型参数
方法一
将集合参数包装成POJO。
- 包装类
public class Vo {
private List<User> users;
@Override
public String toString() {
return "Vo{" +
"users=" + users +
'}';
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
tips: user的属性不要使用包装类型,如Integer,不然会报错。
- controller:
@RequestMapping("/list.do")
@ResponseBody
//获取集合类型参数时,集合中类对象user中的属性不能使用包装类型,如Integer
public ModelAndView doList(Vo vo){
ModelAndView modelAndView = new ModelAndView();
List<User> users = vo.getUsers();
users.forEach(u-> System.out.println(u));
modelAndView.addObject("users",users);
modelAndView.setViewName("target");
return modelAndView;
}
- 初始界面和结果界面
<form action="user/list.do" method="post">
姓名1:<input type ="text" name="users[0].name"><br>
年龄1:<input type ="text" name="users[0].age"><br>
姓名2:<input type ="text" name="users[1].name"><br>
姓名2:<input type ="text" name="users[1].age"><br>
<input type="submit" value="提交">
</form>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1">
<thead>
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
</thead>
<tbody>
<c:forEach var="users" items="${users}" varStatus="s">
<tr>
<td>${users.name}</td>
<td>${users.age}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
方法二:
@RequestMapping("/ajax.do")
@ResponseBody
public void doListOfAjax(@RequestBody List<User> users){
users.forEach(u-> System.out.println(u));
}
<script>
let array = new Array();
array.push({"name":"黄振聪","age":21})
array.push({"name":"黄大大","age":22})
$(function () {
$(".btn").click(function () {
$.ajax({
url:"user/ajax.do",
type:"post",
data:JSON.stringify(array),
dataType:"json",
contentType:"application/json;charset=utf-8"
})
})
})
</script>
标签:
SpringMVC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理