目录
- 复杂数据绑定
- 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即可。