首页 > Web开发 > 详细

spring mvc 接收页面表单List

时间:2014-03-06 07:30:02      阅读:575      评论:0      收藏:0      [点我收藏+]

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

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

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

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

用户Model:

bubuko.com,布布扣
 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 }
bubuko.com,布布扣

控制层:

bubuko.com,布布扣
 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(List<User> users){
12         logger.debug(JSONArray.toJSON(users));
13     }
14 }
bubuko.com,布布扣

 

我们在创建一个jsp:

 

bubuko.com,布布扣
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4   <head>
 5     <title>表单批量提交</title>
 6   </head>
 7   
 8   <body>
 9           <form action="user" method="post">
10               用户名:<input type="text" name="username[0]"><br/>
11               密码:<input type="text" name="password[0]"><br/>
12               用户名:<input type="text" name="username[1]"><br/>
13               密码:<input type="text" name="password[1]"><br/>
14               <input type="submit">
15           </form>        
16   </body>
17 </html>
bubuko.com,布布扣


现在我们来测试下

bubuko.com,布布扣

bubuko.com,布布扣

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

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

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

2.

我们创建一个UserModel

bubuko.com,布布扣
 1 public class UserModel {
 2     private List<User> users;
 3 
 4     public List<User> getUsers() {
 5         return users;
 6     }
 7 
 8     public void setUsers(List<User> users) {
 9         this.users = users;
10     }
11 
12     public UserModel(List<User> users) {
13         super();
14         this.users = users;
15     }
16 
17     public UserModel() {
18         super();
19     }
20 
21 }
bubuko.com,布布扣

 

修改我们的控制层和页面

bubuko.com,布布扣
1 @RequestMapping("/user")
2     public void test(UserModel userModel ){
3         logger.debug(JSONArray.toJSON(userModel));
4     }
bubuko.com,布布扣
bubuko.com,布布扣
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <html>
 4   <head>
 5     <title>表单批量提交</title>
 6   </head>
 7   
 8   <body>
 9           <form action="user" method="post">
10               用户名:<input type="text" name="users[0].username"><br/>
11               密码:<input type="text" name="users[0].password"><br/>
12               用户名:<input type="text" name="users[1].username"><br/>
13               密码:<input type="text" name="users[1].password"><br/>
14               <input type="submit">
15           </form>        
16   </body>
17 </html>
bubuko.com,布布扣

bubuko.com,布布扣

我们来看下控制台打印的结果:bubuko.com,布布扣

这样我们就解决啦!

spring mvc 接收页面表单List,布布扣,bubuko.com

spring mvc 接收页面表单List

原文:http://www.cnblogs.com/wsw0515/p/3582627.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!