zoukankan      html  css  js  c++  java
  • 06_springmvc之参数绑定(pojo和集合)

    一.包装类型pojo参数绑定

    实现方法:

    第一种方法:在形参中 添加HttpServletRequest request参数,通过request接收查询条件参数。

    第二种方法:在形参中让包装类型的pojo接收查询条件参数。

     分析:

    页面传参数的特点:复杂,多样性。条件包括 :用户账号、商品编号、订单信息。。。

    如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱。

    建议使用包装类型的pojo,pojo中属性是pojo。

    例如:

    简单的pojo:

    扩展的pojo:

    包装类型的pojo:

    页面参数:

    商品名称:<input name="itemsCustom.name" />注意:itemsCustom和包装pojo中的属性一致即可。

    二.集合类型绑定

    1.数组的绑定

    实现商品的批量删除:

    页面:

    设置复选框的name值。

    controller方法:

    形参中数组的名字和name属性值保持一致。

    2.list的绑定

    实际应用:批量修改学生成绩等。。。批量提交等。这里演示批量修改商品信息。

    controller方法定义:

             1、进入批量商品修改页面(页面样式参考商品列表实现)

             2、批量修改商品提交

    使用List接收页面提交的批量数据,通过包装pojo接收,在包装pojo中定义list<pojo>属性

    controller:

    这里展示批量修改页面的页面,讲查询出来的集合包装在list中。

      //批量修改商品页面,将商品信息查询出来
        @RequestMapping("/editItemsQuery")
        public ModelAndView editItemsQuery(HttpServletRequest request, ItemsQueryVo itemsQueryVo) throws Exception{
            //调用service查找数据库,查询商品列表,这里使用静态模拟
            List<ItemsCustom> itemsList = itemsService.findItemsList(itemsQueryVo);
    
            //返回ModelAndView
            ModelAndView modelAndView = new ModelAndView();
    
            modelAndView.addObject("itemsList",itemsList);//相当于request.setAtttributes
            modelAndView.setViewName("items/editItemsQuery");//指定返回的视图
            return modelAndView;
        }

    页面:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>查询商品列表</title>
    	<script type="text/javascript">
    	function editItemsAllSubmit() {
    		//提交form
    		document.itemsForm.action="${pageContext.request.contextPath}/items/editItemsAllSubmit.action"
    		document.itemsForm.submit();
    	}
    	function queryItems() {
    		//提交form
    		document.itemsForm.action="${pageContext.request.contextPath}/items/queryItems.action"
    		document.itemsForm.submit();
    	}
    
    
    	</script>
    </head>
    <body> 
    <form name="itemsForm" action="${pageContext.request.contextPath}/items/queryItems.action" method="post">
    查询条件:
    <table width="100%" border=1>
    <tr>
    <td>商品名称:<input name="itemsCustom.name"/></td>
    <td><input type="button" value="查询" οnclick="queryItems()"/></td>
    	<td><input type="button" value="批量修改提交" οnclick="editItemsAllSubmit()"/></td>
    </tr>
    </table>
    商品列表:
    <table width="100%" border=1>
    <tr>
    	<td>商品名称</td>
    	<td>商品价格</td>
    	<td>生产日期</td>
    	<td>商品描述</td>
    	<td>操作</td>
    </tr>
    <c:forEach items="${itemsList }" var="item" varStatus="status">
    	<input type="hidden" value="${item.id}" name="itemsList[${status.index}].id"/>
    <tr>
    	<td><input name="itemsList[${status.index}].name" value="${item.name}"/></td>
    	<td><input name="itemsList[${status.index}].price" value="${item.price}"/></td>
    	<td><input name="itemsList[${status.index}].createtime" value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/> </td>
    	<td><input name="itemsList[${status.index}].detail" value="${item.detail}"/></td>
    	<td><a href="${pageContext.request.contextPath }/items/editItems.action?id=${item.id}">修改</a></td>
    </tr>
    </c:forEach>
    
    </table>
    </form>
    </body>
    
    </html>

    批量修改的方法:

    2.map的绑定

    也通过在包装pojo中定义map类型属性。在包装类中定义Map对象,并添加get/set方法,action使用包装对象接收。

    包装类中定义Map对象如下。

    包装的pojo:

    Public class QueryVo {
    private Map<String, Object> itemInfo = new HashMap<String, Object>();
      //get/set方法..
    }
    

    页面定义如下:

    <tr>
    <td>学生信息:</td>
    <td>
    姓名:<inputtype="text"name="itemInfo['name']"/>
    年龄:<inputtype="text"name="itemInfo['price']"/>
    .. .. ..
    </td>
    </tr>
    

    Contrller方法定义如下:

    public String useraddsubmit(Model model,QueryVo queryVo)throws Exception{
    System.out.println(queryVo.getStudentinfo());
    }
    

    .持续补充中.....

  • 相关阅读:
    JS DOM基础
    JS 部分常见循环、分支、嵌套练习
    记一些让footer始终位于网页底部的方法
    JS 实现banner图的滚动和选择效果
    JS 部分基础内容总结
    Flex弹性布局基础教程
    My SQL数据库的安装与配置
    网页共用头部和尾部的部分方法
    Unity3d入门 关于unity工具的熟悉
    Unity3d学习 制作地形
  • 原文地址:https://www.cnblogs.com/jatpeo/p/11767520.html
Copyright © 2011-2022 走看看