spring mvc 接收页面表单List

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

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

用户Model:

public class User {
 
     //用户名
     private String username;
     //密码
     private String password;
 
     public String getUsername() {
         return username;
     }
 
     public void setUsername(String username) {
         this.username = username == null ? null : username.trim();
     }
 
     public String getPassword() {
         return password;
     }
 
     public void setPassword(String password) {
         this.password = password == null ? null : password.trim();
     }
 
     public User(String username, String password) {
         super();
         this.username = username;
         this.password = password;
     }
 
     public User() {
         super();
     }
 
 }

控制层:

@Controller
@RequestMapping("/")
 public class UserController {
     /**
      * Logger for this class
      */
     private static final Logger logger = Logger.getLogger(UserController.class);
     
     @RequestMapping("/user")
     public void test(List users){
         logger.debug(JSONArray.toJSON(users));
     }
 }

我们在创建一个jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
  <head>
     <title>表单批量提交title>
  <head>
   
   <body>
           <form action="user" method="post">
               用户名:<input type="text" name="username[0]"><br/>
               密码:<input type="text" name="password[0]"><br/>
               用户名:<input type="text" name="username[1]"><br/>
               密码:<input type="text" name="password[1]"><br/>
              <input type="submit">
           </form>        
   <body>
 <html>

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

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

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

我们创建一个UserModel

public class UserModel {
     private List users;
  
     public List getUsers() {
         return users;
     }
 
     public void setUsers(List users) {
         this.users = users;
     }
 
     public UserModel(List users) {
         super();
         this.users = users;
     }
 
     public UserModel() {
         super();
     }
 
 }

修改我们的控制层和页面

     @RequestMapping("/user")
     public void test(UserModel userModel ){
         logger.debug(JSONArray.toJSON(userModel));
     }
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
    <head>
      <title>表单批量提交title>
   <head>
   
   <body>
           <form action="user" method="post">
               用户名:<input type="text" name="users[0].username"><br/>
               密码:<input type="text" name="users[0].password"><br/>
               用户名:<input type="text" name="users[1].username"><br/>
               密码:<input type="text" name="users[1].password"><br/>
               <input type="submit">
           <form>        
  <body>
<html>

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

这样我们就解决啦!

原文地址:https://www.cnblogs.com/zhujiabin/p/4964586.html