最近在用Spring mvc时遇到一个问题在网上搜了很多资料几乎没看到解决办法!
例如当我们在做批量添加或者更新时在Controller层接收表单数据的问题!
我们做一个对用户批量添加的实验!
用户Model
public class User { //用户名 private String username; //密码 private String password; public String getUsername() { return username; } public void setUsername(String username) { thisusername = username == null ? null : usernametrim(); } public String getPassword() { return password; } public void setPassword(String password) { thispassword = password == null ? null : passwordtrim(); } public User(String username String password) { super(); thisusername = username; thispassword = password; } public User() { super(); } }
控制层
@Controller@RequestMapping(/)public class UserController { /** * Logger for this class */ private static final Logger logger = LoggergetLogger(UserControllerclass); @RequestMapping(/user) public void test(List<User> users){ loggerdebug(JSONArraytoJSON(users)); }}
我们在创建一个jsp
<%@ page language=java import=javautil* pageEncoding=UTF%><!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN><html> <head> <title>表单批量提交</title> </head> <body> <form action=user method=post> 用户名<input type=text name=username[]><br/> 密码<input type=text name=password[]><br/> 用户名<input type=text name=username[]><br/> 密码<input type=text name=password[]><br/> <input type=submit> </form> </body></html>
现在我们来测试下
我们可以看到后台报错了具体为何大家可以去看源码
可以用种方式解决这个问题
在表单提交之前把表单序列化成JSON格式传到后台在来解析封装成List<User>
我们创建一个UserModel
public class UserModel { private List<User> users; public List<User> getUsers() { return users; } public void setUsers(List<User> users) { thisusers = users; } public UserModel(List<User> users) { super(); thisusers = users; } public UserModel() { super(); } }
修改我们的控制层和页面
@RequestMapping("/user")
public void test(UserModel userModel ){
loggerdebug(JSONArraytoJSON(userModel));
}
<%@ page language=java import=javautil* pageEncoding=UTF%><!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN><html> <head> <title>表单批量提交</title> </head> <body> <form action=user method=post> 用户名<input type=text name=users[]username><br/> 密码<input type=text name=users[]password><br/> 用户名<input type=text name=users[]username><br/> 密码<input type=text name=users[]password><br/> <input type=submit> </form> </body></html>
我们来看下控制台打印的结果:
这样我们就解决啦!