本文共 2702 字,大约阅读时间需要 9 分钟。
1. 数组的绑定
当前端请求需要传递到后台一个或多个相同名称参数的情况 (如批量删除),此种情况采用前面讲解的简单数据绑定的方式显然是不合适的,此时,就可以使用绑定数组的方式来完成。
创建一个展示用户信息的列表页面 user.jsp。如下:
定义了 name 属性相同而 value 属性值不同的复选框控件,并在每一个复选框对应的行中编写了一个对应用户,在单击"删除"按钮执行删除操作时,表单会提交到一个以 “/DeleteUsers” 结尾的请求中。<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>DeleteUser
jsp页面定义之后就需要编写java代码对数据进行操作。
先定义了一个向用户列表页面 user.jsp 跳转的方法,然后定义了一个接收前端批量删除用户的方法 在删除方法中,使用了Integer 类型的数组进行数据绑定,并通过 for循环执行具体数据的删除操作。//定义入口 @RequestMapping(value = "/toUser") public String SelectUser() { return "user"; } //数据操作 @RequestMapping(value = "/DeleteUser") public String DeleteUser(Integer [] ids) { if (ids!=null) { for (int i = 0; i < ids.length; i++) { System.out.println("删除id为:"+ids[i]+" 的值!"); } }else { System.out.println("ids == null"); } return "success"; }
运行项目,打开网址 http://localhost:8080/DataBanding/hello/toUser
选择俩个要删除的数据,点击删除提交。
在批量删除用户的操作中,前端请求传递的都是同名参数的用户 id ,只要在后台使用同一种数组类型的参数绑定接收,就可以在方法中通过循环数组参数的方式来完成删除操作,但如果是批量修改用户操作,前端请求传递过来的数据可能就会批量包含各种类型的数据,如 Integer,String。针对这种情况,我们可以使用集合数据绑定:即在包装类中定义一个包含用户信息类的集合,然后在接收方法中将参数类型定义为该包装类的集合。
新建一个com.lzq.vo包用于存放集合当中的元素。在包中新建一个类,变量定义及getter/setterpackage com.lzq.vo;import java.util.List;import com.lzq.po.User;public class UserVO { private Listusers; public List getUsers() { return users; } public void setUsers(List users) { this.users = users; }}
定义一个jsp页面。user_edit.jsp当中对数据进行传递
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>集合
最后编写接收批量修改用户的方法,以及向用户修改页面跳转的方法,在使用集合数据绑定时,后台方法中不支持直接使用集合形参进行数据绑定,所以需要使用包装POJO 作为形参,然后在包装 POJO 中包装一个集合属性。
@RequestMapping(value = "/toUserEdit") public String toUserEdit() { return "user_edit"; } @RequestMapping(value = "/EditUsers") public String EditUsers(UserVO userList) { Listusers = userList.getUsers(); if (users!=null) { for (User user : users) { if (user.getId()!=null) { System.out.println("修改数据 :id = " + user.getId() + ", username =" + user.getUsername()); } } } return "success"; }
运行项目,输入网址:http://localhost:8080/DataBanding/hello/toUserEdit
。选择对象修改,在控制台当中查看输出。
转载地址:http://cgmzi.baihongyu.com/