【Spring】— Spring MVC复杂数据绑定

news2024/12/22 23:59:55

目录

  • 复杂数据绑定
    • 1.绑定数组
    • 2.绑定集合

复杂数据绑定

实际项目开发中,除了简单数据类型外,还会经常遇到一些比较复杂的数据绑定问题,比如数组的绑定、集合的绑定,接下来将具体讲解一下数组绑定和集合绑定的使用。

1.绑定数组

在实际开发时,可能会遇到前端请求需要传递到后台一个或多个相同名称参数的情况(如批量删除),此时不适合采用简单数据绑定,而可以使用绑定数组的方式。

【示例12-5】下面通过一个批量删除用户的例子来详细讲解绑定数组的操作。

步骤01 在chapter12项目的WEB-INF/jsp目录下创建一个展示课程信息的列表页面course.jsp。

在这里插入图片描述
在上述页面代码中定义了3个name属性相同而value属性值不同的复选框控件,并在每一个复选框对应的行中编写了一个对应课程。在单击“删除”按钮执行删除操作时,表单会提交到一个以“/ deleteCourse”结尾的请求中。

步骤02 在控制器类CourseController中编写接收批量删除课程的方法(同时为了方便向课程列表页面跳转,还需增加一个向course.jsp页面跳转的方法)。

在这里插入图片描述
在上述代码中,先定义了一个向课程列表页面course.jsp跳转的方法toCourse(),然后定义了一个接收前端批量删除用户的方法。在删除方法中使用了Integer类型的数组进行数据绑定,并通过for执行具体数据的删除操作。

步骤03 发布并启动项目,在浏览器中访问地址http://localhost:8080/chapter12/toCourse。

在这里插入图片描述
勾选图中的全部复选框,然后单击“删除”按钮,程序在正确执行后会跳转到success.jsp页面。

2.绑定集合

在项目中,前端请求传递过来的数据可能会批量包含各种类型的数据,如Integer、String等。这种情况使用数组绑定是无法实现的。针对这种情况,可以使用集合数据绑定,即在包装类中定义一个包含对象类的集合,然后在接收方法中将参数类型定义为该包装类的集合。

【示例12-6】下面以批量修改用户为例讲解一下集合数据绑定的使用。

步骤01 在src目录下创建一个com.ssm.vo包,并在包中创建包装类UserVo来封装课程集合属性。

在这里插入图片描述
步骤02 在控制器类 UserController中编写接收批量修改用户的方法,以及向用户修改页面跳转的方法,其代码如下所示。

在这里插入图片描述
在上述代码的两个方法中,通过toUserEdit()方法将跳转到user_edit.jsp页面,通过editUsers()方法将执行用户批量更新操作,其中该方法的UserVo类型参数用于绑定并获取页面传递过来的用户数据。

注意

在使用集合数据绑定时,后台方法中不支持直接使用集合形参进行数据绑定,所以需要使用包装POJO作为参数,然后在包装POJO中包装一个集合属性。

步骤03 在WEB-INF/jsp目录下创建页面文件user_edit.jsp。

在这里插入图片描述
在上述页面代码中,模拟展示了id为1、用户名为zhangsan和id为2、用户名为lisi的两个用户。当单击“修改”按钮后,会将表单提交到一个以“editUsers”结尾的请求中。

步骤04 发布并启动项目,在浏览器中访问地址http://localhost:8080/chapter12/toUserEdit即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/699044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

白嫖福利?微软推出免费AI培训计划,助内容创作者实现自动化创作

据《IT之家》报道,微软今日宣布推出一项全新的免费AI培训计划,旨在帮助工作人员快速掌握AI技术的基本概念和应用。通过在线课程和证书,助力内容创作者实现更简单、自动化的内容创作。 作为微软的“技能培训计划”,微软旗下的领英&…

C# async await使用方法

运行界面: 代码部分: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using …

基于 VORS、CCDM 模型、GeoDetector、GWR模型集成技术在城镇化与生态系统健康空间关系分析及影响效应中实践应用

城市群是一国经济发展水平的象征,也是一国经济发展到一定阶段的标志,我国城市群建设体量不断增加,将成为全球经济的核心,中国城市群的建设逐步引领全球进入到了21世纪的中国新时代。然而,高速的城镇化发展,…

Diffusion详细学习

解决报错 https://zhuanlan.zhihu.com/p/622238031 原理:https://zhuanlan.zhihu.com/p/612854566 解决内存溢出问题 溢出问题 总结下来:batch_size 和 n_samples 调节 原理学习 扩散模型是一种生成模型,用于生成与训练数据相似的数据。…

Swift 5.9 有哪些新特性(二)

文章目录 前言Noncopyable 结构体和枚举结束变量绑定的生命周期makeStream() 方法添加 sleep(for:) 到 ClockDiscarding task groups总结 前言 虽然 Swift 6 已经在地平线上浮现,但 5.x 版本仍然有很多新功能-更简单的 if 和 switch 用法、宏、非可复制类型、自定义…

(二十四)专题地图编制——制图数据操作

专题地图编制——制图数据操作 目录 专题地图编制——制图数据操作 1.复制地图数据框2.旋转制图数据框3.绘制坐标网格3.1经纬网3.2方里格网3.3参考格网 1.复制地图数据框 要复制地图数据框,请按照以下步骤操作: ①在 ArcMap 中打开地图文档。 ②在“表…

图片怎么转换成PDF格式?学会这些方法轻松转换

将多张图片合并成一个PDF文件,方便用户阅读和管理,避免了多个图片文件的混乱。并且PDF文件可以设置密码保护,避免图片被未经授权的人员查看、复制和编辑。此外,PDF文件可以设置禁止打印和禁止复制等权限,增强图片的安全…

mysql exists深入理解

前言: 某天用exists语句时发现跟我的理解有出入,我以前理解的exists是子查询的结果不会影响最终返回的结果,只要子查询查到有结果,则返回true,没有则返回false。即下面图中的sql,只要house_appraisal不是空表&#xf…

Android中实现Material3主题

Android中实现Material3主题 Material 3是由Google引入的一种设计系统,通过采用一套设计原则、指南和组件,提供统一直观的用户体验。 在本篇文章中,您将学习如何: 在您的Android应用程序中应用Material 3主题。如何使用Materia…

10.1寸工业三防平板应用于工业自动化生产

随着工业自动化的不断发展,工业生产中对于设备的要求也越来越高。在恶劣的工作环境中,工业设备需要具备防尘、防水、防震等功能,以确保设备的稳定运行和长期使用。10.1寸工业三防平板作为一种重要的工业自动化设备,广泛应用于各个…

【算法】算法效率分析 -- 时间空间复杂度

文章目录 概述时间复杂度常数阶 O ( 1 ) O(1) O(1)线性阶 O ( n ) O(n) O(n)对数阶 O ( l o g n ) O(logn) O(logn)线性对数阶 O ( n ∗ l o g n ) O(n*logn) O(n∗logn)次方阶 O ( n 2 ) O(n^2) O(n2) O ( n 3 ) O(n^3) O(n3) O ( n k ) O(n^k) O(nk) O ( n m ) O(nm) …

保持无损连接的BCNF分解算法

建议在看之前熟悉候选键的求法,不清楚的可以转到这里来: http://t.csdn.cn/fW30Q 步骤: INPUT:关系模式R以及在R上成立的函数依赖集F 1.初始化P{R} 2.若P中的所有关系模式S都是BCNF,则转步骤(4) 3.若P中有一个模式S不是BCNF&am…

Linux——IP协议2

目录 公网IP ​编辑 特殊的IP地址 IP地址的数量限制 私有IP地址和公网IP地址 路由 数据链路层 认识以太网 以太网帧格式 如何解包和封装,交付及分用 重谈局域网通信原理 认识MTU MTU对于TCP协议的影响 查看硬件地址和MTU ARP协议 模拟ARP请求 …

ros2内结合gazebo和rviz进行yolov8检测记录

前提:第一次接触ros2, 遇到的问题解决方式不一定准确,只是这次我尝试成功了,想和大家分享一下。 ubuntu20.04系统 目录 1. ros2 1.1 ros2是啥? 1.2 ros2的版本和ubuntu版本的对应关系,当下入门尤其是ubuntu20.04系…

【物理摩擦力图像】对摩擦力大小的因素研究图像

摩擦力与编程 两个相互接触并挤压的物体,当它们发生相对运动或具有相对运动趋势时,就会在接触面上产生阻碍相对运动或相对运动趋势的力,这种力叫做摩擦力(Ff或f)。 摩擦力与正压力(B物体上的A物体产生的压…

数据库实验—复杂查询

查询20161151班的学生在大学一年级选修的课程情况,查询结果要显示学号(Sno)、姓名(Sname)、专业名(Mname)、选课的课程号(Cno)、选课的课程名称(Cname)及成绩(Grade),并按照学号、课程号升序排序 select Sno, Sname,Mname, Cno,Cname,Grade f…

Windows11安装WSL2(Ubuntu20.04)

以管理员身份打开 PowerShell,输入以下命令安装: wsl --install dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /no…

【历史上的今天】6 月 29 日:SGI 和 MIPS 合并;微软收购 PowerPoint 开发商;新闻集团出售 Myspace

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 6 月 29 日,在 2008 年的今天,CNNIC 发布《第 22 次中国互联网络发展状况统计报告》,截至 2008 年 6 月底,中国…

draggable里包裹的卡片,卡片里有个input,点击input聚焦无效。

在input标签上加pointerdown.stop.native <el-input placeholder"请输入" pointerdown.stop.native v-model"dataForm.nickName" :style"{width:180px}" suffix-icon"el-icon-search" lazy />

TLD7002学习笔记(三)-使用S32K144EVB烧录TLD7002

文章目录 1. 前言2. 烧录数据准备2.1 OTP Wizard的下载与安装2.2 OTP Wizard的配置2.3 OTP寄存器烧录数据提取 3. OTP烧录和仿真的流程3.1 OTP烧录流程3.2 OTP仿真流程 4. 验证测试4.1 测试代码4.2 测试环境4.3 测试情况 5. 参考资料 1. 前言 本篇文章是TLD7002学习笔记的第三…