本节内容:

  • 参数绑定之数组
  • 将表单的数据绑定到List

复制下上篇博客中的工程,作为今天开发的工程。

一、参数绑定之数组

1. 需求

在商品列表页面选中多个商品,然后删除。

2. 需求分析

功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Controller,根据商品id删除商品信息。

3. 修改jsp文件

修改itemList.jsp页面,增加多选框,提交url是queryItem.action。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  9. <title>查询商品列表</title>
  10. </head>
  11. <body>
  12. <form action="${pageContext.request.contextPath }/deleteItem.action" method="post">
  13. 查询条件:
  14. <table width="100%" border=1>
  15. <tr>
  16. <td>商品id<input type="text" name="item.id" /></td>
  17. <td>商品名称<input type="text" name="item.name" /></td>
  18. <td><input type="submit" value="查询"/></td>
  19. </tr>
  20. </table>
  21. 商品列表:
  22. <table width="100%" border=1>
  23. <tr>
  24. <td>选择</td>
  25. <td>商品名称</td>
  26. <td>商品价格</td>
  27. <td>生产日期</td>
  28. <td>商品描述</td>
  29. <td>操作</td>
  30. </tr>
  31. <c:forEach items="${itemList }" var="item">
  32. <tr>
  33. <td><input type="checkbox" name="ids" value="${item.id}"/></td>
  34. <td>${item.name }</td>
  35. <td>${item.price }</td>
  36. <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
  37. <td>${item.detail }</td>
  38.  
  39. <td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>
  40.  
  41. </tr>
  42. </c:forEach>
  43.  
  44. </table>
  45. <input type="submit" value="删除">
  46. </form>
  47.  
  48. </body>
  49.  
  50. </html>

页面选中多个checkbox向controller方法传递。

本身属于一个form表单,提交url是queryItem.action

4. Controller

Controller方法中可以用String[]接收,或者在包装类定义一个String[] 属性接收。两种方式任选其一即可。

  1. @RequestMapping(value = "/deleteItem.action")
  2. public String deleteItem(Integer[] ids){
  3.  
  4. for (int i : ids) {
  5. System.out.println(i);
  6. }
  7.  
  8. return "success";
  9. }

二、将表单的数据绑定到List

1. 需求

实现商品数据的批量修改。

2. 开发分析

在商品列表页面中可以对商品信息进行修改。

可以批量提交修改后的商品数据。

3. 定义pojo

List中存放对象,并将定义的List放在包装类QueryVo中

使用包装pojo对象接收,如下图:

4. 改造JSP

  1. <c:forEach items="${itemList }" var="item" varStatus="s">
  2. <tr>
  3. <td><input type="checkbox" name="ids" value="${item.id}"/></td>
  4. <td>
  5. <input type="input" name="itemsList[${s.index}].name" value="${item.name }"/>
  6. </td>
  7. <td>
  8. <input type="input" name="itemsList[${s.index}].price" value="${item.price }"/>
  9. </td>
  10. <td>
  11. <input type="text" name="itemList[${s.index}].createtime" value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
  12. </td>
  13. <td>
  14. <input type="input" name="itemsList[${s.index}].detail" value="${item.detail }"/>
  15. </td>
  16.  
  17. <td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>
  18. </tr>
  19. </c:forEach>

${current} 当前这次迭代的(集合中的)项
${status.first} 判断当前项是否为集合中的第一项,返回值为true或false
${status.last} 判断当前项是否为集合中的最后一项

varStatus属性常用参数总结下:

  • ${status.index} 输出行号,从0开始。
  • ${status.count} 输出行号,从1开始。
  • ${status.后一项,返回值为true或false

begin、end、step分别表示:起始序号,结束序号,跳跃步伐。

5. ItemController

这里只演示List的绑定,能够接收到list数据。
可以拿到数据即可,不做数据库的操作。

  1. //批量修改
  2. @RequestMapping(value = "/updateItems.action")
  3. public String updateItems(QueryVo queryVo){
  4.  
  5. return "success";
  6. }

测试结果:

【注意】:这里是把 List<Items> itemsList 放在了包装类QueryVo中,不能把 List<Items> itemsList 直接放在Controller的方法的形参上,SpringMVC不认识。

SpringMVC高级参数绑定(数组和List)的更多相关文章

  1. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  2. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  3. 高级参数绑定(数组和List绑定)

    1.绑定数组: (1) 需求 在商品列表页面选中多个商品,然后删除. (2). 需求分析 功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Contr ...

  4. springMVC第二天——高级参数绑定与其它特性

    大纲摘要: 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 2.@RequestMapping注解的使用 3.Controller方法返回值 4.Springmvc中异常处理 5 ...

  5. JAVAEE——SpringMVC第二天:高级参数绑定、@RequestMapping、方法返回值、异常处理、图片上传、Json交互、实现RESTful、拦截器

    1. 课前回顾 https://www.cnblogs.com/xieyupeng/p/9093661.html 2. 课程计划 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 ...

  6. 什么是springMvc的参数绑定?

    参数绑定通俗来讲就是从页面传过来的数据通过SpringMvc进行接收.接收的数据类型可以有: (1)SpringMvc默认支持的类型:request.session.application等. (2) ...

  7. springmvc(2)--参数绑定

    一.以实例来看springmvc各种参数绑定方式   先定义个dto类: public class RestInDto implements Serializable { private static ...

  8. SpringMVC学习--参数绑定

    spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上.springmvc中,接收页面提交的数据是通过方法形参来接收 ...

  9. SpringMVC(三) —— 参数绑定和数据回显

    参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程. 默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它) HttpServletRequest HttpSer ...

随机推荐

  1. gitlab迁移

    1.背景: 操作系统:CentOS Linux release (Core) gitlab版本: 使用rpm包地址:https://mirrors.tuna.tsinghua.edu.cn/gitla ...

  2. 【刷题】LOJ 2587 「APIO2018」铁人两项

    题目描述 比特镇的路网由 \(m\) 条双向道路连接的 \(n\) 个交叉路口组成. 最近,比特镇获得了一场铁人两项锦标赛的主办权.这场比赛共有两段赛程:选手先完成一段长跑赛程,然后骑自行车完成第二段 ...

  3. 【刷题】BZOJ 2287 【POJ Challenge】消失之物

    Description ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. "要使用剩下的 N - 1 物品装满容积为 x ...

  4. SDOI2017 R2泛做

    由于各种原因,在bzoj上我day1的题一题都没过,所以这里就直接贴loj的链接好了. D1T1 龙与地下城 中心极限定理. https://en.wikipedia.org/wiki/Central ...

  5. Oracle中对number类型数据to_char()出现各位少0,或者值为###的处理

    问题描述: 在Oracle中使用to_char()函数时当number值为小数时,常常个位0不显示 比如:select to_char(0.02) from dual,结果为.02 改进为 selec ...

  6. debian9使用systemd部署etcd集群

    在centos上,是可以直接使用yum安装etcd的: # yum list | grep etcd etcd.x86_64 3.2.9-3.el7 @extras 但是,在debian上却没有安装包 ...

  7. 使用easyui实现双击列表中某个值直接对其进行修改

    var editCell = undefined; $('#dg').datagrid({ url:'DwzServlet', iconCls:'icon icon-list' , queryPara ...

  8. 微信公众号用户OpenID同步导出系统

    一.简介 同步公众账号用户信息,包括OpenID.昵称.头像.地区等. 二.主要功能 同步公众账号用户 OpenID,以及昵称.头像.性别.地区.关注时间等,支持认证订阅号.认证服务号. 支持超过1万 ...

  9. [CEOI2015 Day2]世界冰球锦标赛 (双向搜索)

    题目描述 [CEOI2015 Day2]世界冰球锦标赛译自 CEOI2015 Day2 T1「Ice Hockey World Championship」 今年的世界冰球锦标赛在捷克举行.Bobek ...

  10. redhat7配置本地yum源

    1.首先是要有一个iso文件,并将这个文件挂载到某个目录 挂载: 配置: 检验: yum list 现在你就可以在没有网的情况下,安装软件了~~~