spring mvc 接收页面表单List

时间:2022-06-18 15:54:20

很少写博客,如果写的不好请多多包涵!

最近在用Spring mvc时遇到一个问题,在网上搜了很多资料。几乎没看到解决办法!

例如:当我们在做批量添加或者更新时,在Controller层接收表单数据的问题!

我们做一个对用户批量添加的实验!

用户Model:

 public class User {

     //用户名
private String username;
//密码
private String password; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username == null ? null : username.trim();
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password == null ? null : password.trim();
} public User(String username, String password) {
super();
this.username = username;
this.password = password;
} public User() {
super();
} }

控制层:

 @Controller
@RequestMapping("/")
public class UserController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(UserController.class); @RequestMapping("/user")
public void test(List<User> users){
logger.debug(JSONArray.toJSON(users));
}
}

我们在创建一个jsp:

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>表单批量提交</title>
</head> <body>
<form action="user" method="post">
用户名:<input type="text" name="username[0]"><br/>
密码:<input type="text" name="password[0]"><br/>
用户名:<input type="text" name="username[1]"><br/>
密码:<input type="text" name="password[1]"><br/>
<input type="submit">
</form>
</body>
</html>

现在我们来测试下

spring mvc 接收页面表单List

spring mvc 接收页面表单List

我们可以看到后台报错了.具体为何大家可以去看源码

可以用2种方式解决这个问题:

1.在表单提交之前,把表单序列化成JSON格式传到后台,在来解析封装成List<User>.

2.

我们创建一个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("/user")
public void test(UserModel userModel ){
logger.debug(JSONArray.toJSON(userModel));
}
 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>表单批量提交</title>
</head> <body>
<form action="user" method="post">
用户名:<input type="text" name="users[0].username"><br/>
密码:<input type="text" name="users[0].password"><br/>
用户名:<input type="text" name="users[1].username"><br/>
密码:<input type="text" name="users[1].password"><br/>
<input type="submit">
</form>
</body>
</html>

spring mvc 接收页面表单List

我们来看下控制台打印的结果:spring mvc 接收页面表单List

这样我们就解决啦!