spring mvc 接收頁面表單List


很少寫博客,如果寫的不好請多多包涵!

最近在用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(List<User> users){
12         logger.debug(JSONArray.toJSON(users));
13     }
14 }

 

我們在創建一個jsp:

 

 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>


現在我們來測試下

我們可以看到后台報錯了.具體為何大家可以去看源碼

可以用2種方式解決這個問題:

1.在表單提交之前,把表單序列化成JSON格式傳到后台,在來解析封裝成List<User>.

2.

我們創建一個UserModel

 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 }

 

修改我們的控制層和頁面

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 <!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>

我們來看下控制台打印的結果:

這樣我們就解決啦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM