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

最近在用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. @RequestMapping("/user")
  10. public void test(List<User> users){
  11. logger.debug(JSONArray.toJSON(users));
  12. }
  13. }

我们在创建一个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>

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

这样我们就解决啦!

spring mvc 接收页面表单List的更多相关文章

  1. SpringMVC接收页面表单参数-java-电脑编程网

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  2. SpringMVC接收页面表单参数

    一个普通的表单. 表单的代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8&q ...

  3. SpringMVC接收页面表单参数(转)

    作者:CN.programmer.Luxh 和java相关 一个普通的表单. 表单的代码如下: <%@ page language="java" contentType=&q ...

  4. Spring MVC接收参数(Map,List,JSON,Date,2个Bean)(记录一次面试惨状)

    题目Spring MVC 接收参数 MapListDate2个BeanJSON Spring MVC接收参数 -Map Spring MVC接收参数 -List Spring MVC接收参数 -dat ...

  5. html 页面表单如果是disabled,则不能提交到服务器端,request.getParameter得到的将为null

    html 页面表单如果是disabled,则不能提交到服务器端,request.getParameter得到的将为null 解决方法:使用hidden 利用javascript赋值,传递到后台

  6. 把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进)

    #把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进) ##背景 项目中经常需要把JSON数据填充到页面表单,一开始我使用easyui自带的form load方法,觉得效率很低,经 ...

  7. 记录ASP.NET页面表单初始状态(主要是为了前台可以根据这个判断页面是否变动了)

    把页面表单状态记录到HiddenField中. 这里只提供后台代码, 前台逻辑根据需求自由定义. 存放值的ViewState: protected Dictionary<string, stri ...

  8. 使用Spring mvc接收整个url地址及参数时注意事项

    使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...

  9. spring mvc接收ajax提交的JSON数据,并反序列化为对象

    需求:spring mvc接收ajax提交的JSON数据,并反序列化为对象,代码如下: 前台JS代码: //属性要与带转化的对象属性对应 var param={name:'语文',price:16}; ...

随机推荐

  1. js中Number数字数值运算后值不对

    问题: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两 ...

  2. Unity3D Persistent Storage

    [Unity3D Persistent Storage] 1.PlayerPrefs类以键值对的形式来提供PersistentStorage能力.提供小额存储能力.(做成sst可以提供大规模数据存储) ...

  3. Advanced Scene Processing

    [How a Scene Processes Frames of Animation] In the traditional view system, the contents of a view a ...

  4. 存量数据处理结果查询.txt

    请求报文:<?xml version="1.0" encoding="UTF-8"?><PDL><PDL-Head>< ...

  5. linux 下查找大于100M的文件

    命令行如下 find . -type f -size +100M Linux系统下查找大文件或目录的技巧 当硬盘空间不够时,我们就很关心哪些目录或文件比较大,看看能否干掉一些了,怎么才能知道呢?以易读 ...

  6. Giraph之SSSP(shortest path)单机伪分布运行成功

    所遇问题:Exception 1: Exception in thread "main" java.lang.IllegalArgumentException: "che ...

  7. 在WPF程序中使用摄像头兼谈如何使用AForge.NET控件(转)

    前言: AForge.NET 是用C#写的一个关于计算机视觉和人工智能领域的框架,它包括图像处理.神经网络.遗传算法和机器学习等.在C#程序中使用摄像头,我习惯性使用AForge.NET提供的类库.本 ...

  8. 32.怎样在Swift中实现TabBar和导航视图结合的项目?

    导航栏和TabBar结合的项目,在我们平常开发中会经常看到,下面我们通过自定义的TabBar来实现一个导航和TabBar结合的Demo. 1.自定义TabBar import UIKit class ...

  9. C# WinForm使用Aspose.Cells.dll 导出导入Excel/Doc 完整实例教程

    1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 Aspose C# 导出Excel 实例”一文中的 ...

  10. ssh-keygen 无密码登陆需要注意一个问题

    从今天开始记录一下工程上的小知识. ssh-keygen -t rsa cat id_rsa.pub >> authorized_keys后,切记,将authrorized_keys文件的 ...