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>

我们来看下控制台打印的结果:

这样我们就解决啦!

优质内容筛选与推荐>>
1、4G DTU 在供应链管理中的应用方案
2、矩阵压缩学习笔记
3、php 使用fsockopen 发送http请求
4、PX4 IO [15] mixer
5、java字符串常用方法


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn