在批量删除用户的操作中,前端请求传递的同名参数的用户id,只要在后台使用同一种数组类型的参数绑定接收,就可以在方法中通过循环数组参数的方式来完成删除操作。
但如果是批量修改用户操作的话,前端请求传递过来的数据可能就会包含各种类型的数据,如Integer,String等。
如何处理这种数据类型的请求呢?
针对上述这种情况,就可以使用集合数据绑定。即在包装类中定义一个包含用户信息类的集合,然后再接收方法中将参数类型定义为该包装类的集合。
接下来,以批量修改用户为例,来讲解一下集合数据绑定的使用:
(这里导入jar包,编写web.xml,编写spring-config.xml就不赘述了,也可以看看我的前几篇博客,上面都有介绍)
1.创建包装类POJO,封装用户集合信息UserVO.java
package com.itheima.controller;
import java.util.List;
import org.apache.catalina.User;
public class UserVO {
private List<User> users;
public List<User> getUsers(){
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
2.在处理器类中编写批量修改用户的方法AlterUsers.java
package com.itheima.controller;
import org.apache.catalina.User;
import org.springframework.expression.spel.ast.Indexer;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
@Controller
public class AlterUsers {
@RequestMapping("/editUsers")
public String editUsers(UserVO userList) {
List<User> users = userList.getUsers();
if(users != null) {
for(User user:users) {
if(user.getName() != null) {
System.out.println("修改了id为"+user.getName()+"用户名为:"+user.getUsername());
}
}
}
return "success";
}
}
3.编写用户批量修改页面success.jsp
扫描二维码关注公众号,回复:
9181213 查看本文章
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Result page</title>
</head>
<body>
<form action = "${pageContext.request.contextPath}/editUsers" method = "post">
<table width = "30%" border = 1>
<tr><td>choose</td><td>username</td></tr>
<tr><td><input name = "users[0].id" value = "1" type = "checkbox"/></td>
<td><input name = "users[0].username" value = "tome" type = "text"/></td></tr>
<tr><td><input name = "users[1].id" value = "2" type = "checkbox"/></td>
<td><input name = "users[1].username" value = "jack" type = "text"/></td></tr>
</table>
<input type = "submit" value = "Edit"/>
</form>
</body>
</html>
4.控制台信息
5.启动项目,访问http://localhost:8081/chapter13/eiditUsers