问题背景:
我要在一个表单里同时一次性提交多名乘客的个人信息到SpringMVC,前端HTML和SpringMVC Controller里该如何处理?
- 第1种方法:表单提交,以字段数组接收;
- 第2种方法:表单提交,以BeanListModel接收;
- 第3种方法:将Json对象序列化成Json字符串提交,以List接收;
- 第4种方法:将表单对象序列化成Json字符串提交,以List接收;
第4种方法其实是第3种方法的升级,就是将表单转成Json对象,再转成Json字符串提交; 然而,第4种方法还不支持含有多选控件表单的提交,故应该还有第5种加强版的方法。
以上4种方法都共用同一个User实体类,代码如下:
public class User { private Integer id; private String name; private String pwd; @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } // .......后面还有getter、setter方法,省略了 }
第1种方法:表单提交,以字段数组接收
HTML代码如下:
Java代码如下:
@RequestMapping(value = "/submitUserList_1", method ={RequestMethod.POST}) @ResponseBody public String submitUserList_1(HttpServletResponse response,Integer[] id, String[] name, String[] pwd) throws Exception{ String result = ""; if(id == null || id.length <= 0){ return "No any ID.中文"; } ListuserList = new ArrayList (); for (int i = 0; i < id.length; i++ ) { User user = new User(); user.setId(id[i]); user.setName(name[i]); user.setPwd(pwd[i]); userList.add(user); } result = this.showUserList(userList); return result; }
第2种方法:表单提交,以BeanListModel接收
HTML代码如下:
Java代码:
除了刚才公用的User类,还要封装一个User的容器类UserModel:
public class UserModel { private Listusers; public List getUsers() { return users; } public void setUsers(List users) { this.users = users; } public UserModel(List users) { super(); this.users = users; } public UserModel() { super(); }}
SpringMVC Controller方法:
@RequestMapping(value = "/submitUserList_2", method ={RequestMethod.POST}) @ResponseBody public String submitUserList_2(UserModel users) throws Exception{ String result = ""; ListuserList = users.getUsers(); if(userList == null || userList.size() <= 0){ return "No any ID.中文"; } result = this.showUserList(userList); return result; }
第3种方法:将Json对象序列化成Json字符串提交,以List接收
HTML代码:
submitUserList_3 submitUserList_3
Java代码:
@RequestMapping(value = "/submitUserList_3", method ={RequestMethod.POST}) @ResponseBody public String submitUserList_3(@RequestBody Listusers) throws Exception{ String result = ""; if(users == null || users.size() <= 0){ return "No any ID.中文"; } result = this.showUserList(users); return result; }
第4种方法:将表单对象序列化成Json字符串提交,以List接收
HTML代码:
submitUserList_4 submitUserList_4
Java代码:
@RequestMapping(value = "/submitUserList_4", method ={RequestMethod.POST}) @ResponseBody public String submitUserList_4(@RequestBody Listusers) throws Exception{ String result = ""; if(users == null || users.size() <= 0){ return "No any ID.中文"; } result = this.showUserList(users); return result; }