当前位置: 首页 > article >正文

Spring MVC复杂数据绑定-绑定数组

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

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

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

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

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

12.3.1  绑定数组

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

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

 在chapter12项目的WEB-INF/jsp目录下创建一个展示课程信息的列表页面course.jsp,代码如文件12.11所示。

文件12.11  course.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}/deleteCourse" method="post">
11				<table>
12					<tr>
13					<td>选择</td>
14					<td>课程名</td>
15					</tr>
16					<tr>
17					<td><input name="ids" value="1" type="checkbox"></td>
18					<td>JAVA程序设计</td>
19					</tr>
20					<tr>
21					<td><input name="ids" value="2" type="checkbox"></td>
22					<td>MySQL数据库</td>
23					</tr>
24					<tr>
25					<td><input name="ids" value="3" type="checkbox"></td>
26					<td>JavaEE应用开发</td>
27					</tr>
28				</table>
29				<input type="submit" value="删除"/>
30			</form>
31		</body>
32	</html>

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

 在控制器类CourseController中,编写接收批量删除课程的方法(同时为了方便向课程列表页面跳转,还需增加一个向course.jsp页面跳转的方法),其代码如文件12.12所示。

文件12.12  CourseController.java

01	package com.ssm.controller;
02	import org.springframework.stereotype.Controller;
03	import org.springframework.web.bind.annotation.RequestMapping;
04	import org.springframework.web.bind.annotation.RequestParam;
05	@Controller
06	public class CourseController {
07	    //向课程页面跳转
08		@RequestMapping("/toCourse")
09		public String toCourse(){
10			return "course";
11		}
12	     //删除课程
13		@RequestMapping("/deleteCourse")
14		public String deleteCourse(@RequestParam(value="ids",required=false) Integer[] ids){
15			if(ids!=null){
16				//使用输出语句模拟已经删除的课程
17				for(Integer id:ids){
18			   	   	System.out.println("删除了id为"+id+"的课程");
19				}
20			}else{
21			   	System.out.println("ids=null");
22			}
23			return "success";
24		}
25	}

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

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

图12.8  运行结果course.jsp课程列表页面

勾选图12.8所示的界面中的全部复选框,然后单击“删除”按钮,程序在正确执行后会跳转到success.jsp页面。此时控制台的打印信息如图12.9所示。从图12.9所示的结果中可以看出,已成功执行了批量删除操作,这说明已成功实现了数组类型的数据绑定。

图12.9  运行结果


http://www.kler.cn/a/504327.html

相关文章:

  • Oracle EBS GL定期盘存WIP日记账无法过账数据修复
  • MYSQL5.7 全文检索中文无返回数据
  • Docker官网安装
  • 大语言模型的稀疏性:提升效率与性能的新方向
  • 56_多级缓存实现
  • VS2015 + OpenCV + OnnxRuntime-Cpp + YOLOv8 部署
  • 13:00面试,13:08就出来了,问的问题有点变态。。。
  • 2025最新JAVA面试八股文【基础篇】
  • Rk3568 Andorid 11 新增adb检测,只有使用客户私钥的设备才能链接adb
  • 集中式架构vs分布式架构
  • 【硕博研究生国际会议推荐(可线上)】方向涵盖电子信息、人工智能、能源利用、自动化、数据处理、信息化经济、管理、智慧城市、公共交通、计算机视觉...
  • 数据结构和算法-07平衡二叉树-01
  • 《拉依达的嵌入式\驱动面试宝典》—Linux篇(六)_Linux驱动编程
  • pytest-instafail:让测试失败信息即时反馈
  • 【PyQt】通过load ui来实现菜单栏
  • burpsiute的基础使用(2)
  • 如何通过高防服务隐藏服务器源IP
  • 【docker下载kaggle国外镜像超时】kaggle比赛中时遇到的问题
  • 《深度剖析算法优化:提升效率与精度的秘诀》
  • 在Alpine这小破车里塞进Nginx?
  • 【Spring Boot 应用开发】-04-01 自动配置-数据源-连接池
  • Vue语音播报功能
  • 模拟退火算法在Matlab中的两个应用案例及代码
  • MYSQL5.7 全文检索中文无返回数据
  • MySQL 日志:undo log、redo log、binlog 有什么用?
  • 软件工程和项目管理领域 - CMMI 极简理解