绑定集合

      在批量删除用户的操作中,前端请求传递的同名参数的用户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

发布了376 篇原创文章 · 获赞 172 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/Eider1998/article/details/104206709