Spring MVC复杂数据绑定-绑定集合

news/2025/1/19 2:16:19/

【图书介绍】《Spring+Spring MVC+MyBatis从零开始学(视频教学版)(第3版)》_【新华文轩】spring+spring mvc+mybatis从零开始学(视频教学版) 第3版 正版-CSDN博客

《Spring+Spring MVC+MyBatis从零开始学(视频教学版)(第3版)》(杨章伟,刘祥淼)【摘要 书评 试读】- 京东图书

【图书介绍】案例可借鉴的Spring应用开发书-CSDN博客

Spring MVC简单数据绑定-CSDN博客

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

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

 在src目录下创建一个com.ssm.vo包,并在包中创建包装类UserVo来封装课程集合属性,代码如文件12.13所示。

文件12.13  UserVo.java

01	package com.ssm.vo;
02	import java.util.List;
03	import com.ssm.po.User;
04	/*
05	 * 用户包装类
06	 */
07	public class UserVo {
08		private List<User> users;   //用户列表
09		public List<User> getUsers() {
10			return users;
11		}
12		public void setUsers(List<User> users) {
13			this.users = users;
14		}
15	}

在控制器类 UserController中编写接收批量修改用户的方法,以及向用户修改页面跳转的方法,其代码如下所示:

//向用户批量修改页面跳转
@RequestMapping("/toUserEdit")
public String toUserEdit() {
return "user_edit";
}
//接收批量修改用户的方法
@RequestMapping("/editUsers")	
public String editUsers(UserVo userList){//将所有用户数据封装到集合中List<User> users=userList.getUsers();for(User user:users){if(user.getId()!=null){System.out.println("修改了id为"+user.getId()+"的用户名为"+
user.getUsername());}}return "success";
}

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

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

 在项目的/WEB-INF/jsp目录下创建页面文件user_edit.jsp,如文件12.14所示。

文件12.14  user_edit.jsp

01	<%@ page language="java" contentType="text/html; charset=UTF-8"
02	    pageEncoding="UTF-8"%>
03	<!DOCTYPE HTML>
04	<html>
05		<head>
06			<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
07		<title>修改用户</title>
08		</head>
09		<body>
10			<form action="${pageContext.request.contextPath}/editUsers" method="post">
11				<table>
12					<tr>
13						<td>选择</td>
14						<td>用户名</td>
15					</tr>
16					<tr>
17						<td><input name="users[0].id" value="1" type="checkbox"></td>
18						<td>
19	                   <input name="users[0].username" value="zhangsan" type="text">
20	                  </td>
21					</tr>
22						<tr>
23						<td><input name="users[1].id" value="2" type="checkbox"></td>
24						<td>
25	                     <input name="users[1].username" value="lisi" type="text">
26	                   </td>
27					</tr>
28				</table>
29				<input type="submit" value="修改"/>
30			</form>
31		</body>
32	</html>

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

 发布并启动项目,在浏览器中访问地址http://localhost:8080/chapter12_war_exploded/ toUserEdit,显示效果如图12.10所示。

图12.10  user_edit.jsp页面

将图12.10所示页面中的用户名zhangsan改为tom,lisi改为rose,并勾选两项数据前面的复选框,然后单击“修改”按钮后,浏览器会跳转到success.jsp页面中。此时控制台的打印信息如图12.11所示。从结果中可以看出,已经成功输出请求中批量修改的用户信息,这就是集合类型的数据绑定。

图12.11  运行结果


http://www.ppmy.cn/news/1564287.html

相关文章

宝塔php7.4安装报错,无法安装,php8以上可以安装,以下的不行,gd库什么的都正常

宝塔的依赖问题导致的问题&#xff0c;最后手动挂载后才解决。。。废了三天三夜终于搞好了。。。。无语&#xff5e; 建议&#xff1a;不要一直升级宝塔版本&#xff0c;升级前备份或者开服务商的实例镜像&#xff0c;方便恢复&#xff0c;不然&#xff0c;可就GG了&#xff5…

Python毕业设计选题:基于django+vue的二手电子设备交易平台设计与开发

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 设备类型管理 设备信息管理 系统首页 设备信息…

如何通过高防服务隐藏服务器源IP

在网络安全领域&#xff0c;隐藏服务器的真实源IP地址是保护服务器免受直接攻击的重要手段之一。暴露的源IP地址容易成为黑客攻击的目标&#xff0c;尤其是DDoS攻击、端口扫描和暴力破解等威胁。高防服务&#xff08;如阿里云盾、AWS Shield等&#xff09;不仅提供强大的流量清…

数据库基础练习1(创建表,设置外键,检查,不为空,主键等约束)安装mysql详细步骤

安装MySQL详细步骤 1. 下载 MySQL 安装程序 访问 MySQL 官方网站&#xff1a;MySQL Downloads。在下载页面&#xff0c;选择 "MySQL Community (GPL) Downloads"。在 "MySQL Community Server" 部分&#xff0c;根据你的操作系统&#xff08;Windows&…

用 Python 处理 CSV 和 Excel 文件

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

【Java】—— 基于Websocket实现页面聊天效果

基于SpringBootVue和Websocket实现页面聊天效果&#xff0c;如下&#xff1a; 一、WebSocket 的主要特点 全双工通信&#xff1a;一旦 WebSocket 连接建立&#xff0c;客户端和服务器就可以随时相互发送消息&#xff0c;而不需要一方必须先发起请求。 较少的控制开销&#xf…

DNVS许可分析的数据可视化

在数字化时代&#xff0c;数据可视化已成为企业决策的重要工具。DNVS许可分析的数据可视化将复杂的合规数据转化为直观、易理解的图形和图表&#xff0c;帮助企业快速洞察合规风险&#xff0c;做出明智的决策。本文将探讨DNVS许可分析数据可视化的重要性及其如何助力企业实现合…

4 AXI USER IP

前言 使用AXI Interface封装IP&#xff0c;并使用AXI Interface实现对IP内部寄存器进行读写实现控制LED的demo&#xff0c;这个demo是非常必要的&#xff0c;因为在前面的笔记中基本都需哟PS端与PL端就行通信互相交互&#xff0c;在PL端可以通过中断的形式来告知PS端一些事情&…