很少写博客,如果写的不好请多多包涵!
最近在用Spring mvc时遇到一个问题,在网上搜了很多资料。几乎没看到解决办法!
例如:当我们在做批量添加或者更新时,在Controller层接收表单数据的问题!
我们做一个对用户批量添加的实验!
用户Model:
1 public class User { 2 3 //用户名 4 private String username; 5 //密码 6 private String password; 7 8 public String getUsername() { 9 return username;10 }11 12 public void setUsername(String username) {13 this.username = username == null ? null : username.trim();14 }15 16 public String getPassword() {17 return password;18 }19 20 public void setPassword(String password) {21 this.password = password == null ? null : password.trim();22 }23 24 public User(String username, String password) {25 super();26 this.username = username;27 this.password = password;28 }29 30 public User() {31 super();32 }33 34 }
控制层:
1 @Controller 2 @RequestMapping("/") 3 public class UserController { 4 /** 5 * Logger for this class 6 */ 7 private static final Logger logger = Logger.getLogger(UserController.class); 8 9 10 @RequestMapping("/user")11 public void test(Listusers){12 logger.debug(JSONArray.toJSON(users));13 }14 }
我们在创建一个jsp:
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 3 4 516 17表单批量提交 6 7 8 9
我们可以看到后台报错了.具体为何大家可以去看源码
可以用2种方式解决这个问题:
1.在表单提交之前,把表单序列化成JSON格式传到后台,在来解析封装成List<User>.
2.
我们创建一个UserModel
1 public class UserModel { 2 private Listusers; 3 4 public List getUsers() { 5 return users; 6 } 7 8 public void setUsers(List users) { 9 this.users = users;10 }11 12 public UserModel(List users) {13 super();14 this.users = users;15 }16 17 public UserModel() {18 super();19 }20 21 }
修改我们的控制层和页面
1 @RequestMapping("/user")2 public void test(UserModel userModel ){3 logger.debug(JSONArray.toJSON(userModel));4 }
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 3 4 516 17表单批量提交 6 7 8 9
我们来看下控制台打印的结果:
这样我们就解决啦!