springmvc参数绑定-复杂绑定

    xiaoxiao2021-03-26  22

    包装类型pojo参数绑定 需求:用户查询Controller方法中实现用户名称查询条件传入 实现方式: 一:在形参中添加HttpServletRequest request 参数,通过request接收查询条件参数 二:在形参中让包装类型的pojo接收查询条件参数 分析: 页面传参的特点:复杂,多样性,条件包括:用户账号、商品编号、订单信息等等 如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱 建议使用包装类型的pojo,pojo中的属性是pojo 实现: jsp页面: <form action="${pageContext.request.contextPath }/user/queryUsers.action" method="post"> <table> <tr> <td>名称:<input name="userCustom.name" /> <input type="submit" value="提交" /> </td> </tr> </form> Controller: @RequestMapping("/queryUsers") public String queryUsers(Model model, UsersQueryVo usersQueryVo) throws Exception { List<UserCustom> usersList = usersService.findUsersList(usersQueryVo); model.addAttribute("userList", usersList); return "user/user"; } 注意:一定要考虑程序的可扩展性,多用包装类,应对多个pojo 数组类型绑定 需求:批量删除用户 实现方式:jsp多选框名称和形参名称保持一致 jsp页面: <c:forEach items="${userList}" var="item"> <tr> <td><input type="checkbox" name="user_id" value="${item.id }" /></td> <td>${item.name}</td> </tr> </c:forEach> Controller: @RequestMapping("/deleteUsers") public String deleteUsers(Integer[] user_id) throws Exception { return "success"; } List集合类型绑定 需求:批量修改用户信息 实现方式: 1.查询包装类里添加集合属性,用于修改的信息传递到Controller 2.前端页面注意是按照集合索引的形式赋值 jsp页面: <form name="form1" action="${pageContext.request.contextPath }/user/editAllUsersSubmit.action" method="post"> <table> <tr> <td colspan="4"><input type="submit" value="批量修改" /></td> </tr> <tr> <td>name</td> <td>age</td> <td>address</td> <td>modifytime</td> </tr> <c:forEach items="${userList}" var="item" varStatus="status"> <tr> <td><input name="userCustoms[${status.index}].name" value="${item.name}" /></td> <td><input name="userCustoms[${status.index}].age" value="${item.age}" /></td> <td><input name="userCustoms[${status.index}.address" value="${item.address}" /></td> <td><input name="userCustoms[${status.index}].modifytime" value='<fmt:formatDate value="${item.modifytime }" pattern="yyyy-MM-dd HH:mm:ss" />' /></td> </tr> </c:forEach> </table> </form> Controller: @RequestMapping("/editAllUsers") public String editAllUsers(Model model) throws Exception { List<UserCustom> usersList = usersService.findUsersList(null); model.addAttribute("userList", usersList); return "user/editAllUsers"; } @RequestMapping("/editAllUsersSubmit") public String editAllUsersSubmit(UsersQueryVo usersQueryVo) throws Exception { return "success"; } pojo包装对象: public class UsersQueryVo { private List<UserCustom> userCustoms; public List<UserCustom> getUserCustoms() { return userCustoms; } public void setUserCustoms(List<UserCustom> userCustoms) { this.userCustoms = userCustoms; } } Map类型绑定 在包装类中定义Map对象,并添加get/set方法,action使用包装对象接收。 jsp页面: <tr> <td>信息:</td> <td> 姓名:<inputtype="text"name="itemInfo['name']"/> 年龄:<inputtype="text"name="itemInfo['age']"/> .. .. .. </td> </tr> Contrller: public String useraddsubmit(Model model,QueryVo queryVo)throws Exception{ System.out.println(queryVo.getStudentinfo()); } 包装类中定义Map对象如下: Public class QueryVo { private Map<String, Object> itemInfo = new HashMap<String, Object>();   //get/set方法.. }
    转载请注明原文地址: https://ju.6miu.com/read-658469.html

    最新回复(0)