zoukankan      html  css  js  c++  java
  • springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    标签: springmvc



    本文主要介绍注解开发的集合类型參数绑定,包含数组绑定,list绑定以及map绑定

    数组绑定

    需求

    商品批量删除,用户在页面选择多个商品。批量删除。

    表现层实现

    关键:将页面选择(多选)的商品id,传到controller方法的形參,方法形參使用数组接收页面请求的多个商品id。

    • controller方法定义:
    // 批量删除 商品信息
    @RequestMapping("/deleteItems")
    public String deleteItems(Integer[] items_id) throws Exception
    • 页面定义:
    <c:forEach items="${itemsList }" var="item">
    <tr>
        <td><input type="checkbox" name="items_id" value="${item.id}"/></td>
        <td>${item.name }</td>
        <td>${item.price }</td>
        <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
        <td>${item.detail }</td>
    
        <td><a href="${pageContext.request.contextPath }/items/editItems.action?id=${item.id}">改动</a></td>
    
    </tr>
    </c:forEach>

    list绑定

    需求

    通常在须要批量提交数据时。将提交的数据绑定到list<pojo>中,比方:成绩录入(录入多门课成绩。批量提交),

    本样例需求:批量商品改动。在页面输入多个商品信息。将多个商品信息提交到controller方法中。

    表现层实现

    • controller方法定义:
      • 1、进入批量商品改动页面(页面样式參考商品列表实现)
      • 2、批量改动商品提交

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

    public class ItemsQueryVo {
    
        //商品信息
        private Items items;
    
        //为了系统 可扩展性。对原始生成的po进行扩展
        private ItemsCustom itemsCustom;
    
        //批量商品信息
        private List<ItemsCustom> itemsList;
    // 批量改动商品提交
    // 通过ItemsQueryVo接收批量提交的商品信息,将商品信息存储到itemsQueryVo中itemsList属性中。
    @RequestMapping("/editItemsAllSubmit")
    public String editItemsAllSubmit(ItemsQueryVo itemsQueryVo) throws Exception {
    
        return "success";
    }
    • 页面定义:
    <c:forEach items="${itemsList }" var="item" varStatus="status">
        <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>
    
        </tr>
    </c:forEach>

    name的格式:

    相应包装pojo中的list类型属性名[下标(从0開始)].包装pojo中List类型的属性中pojo的属性名

    样例:

    "name="itemsList[${status.index }].price"

    能够和包装类型的參数绑定归纳对照一下,事实上就是在包装类的pojo基础上多了个下标。仅仅只是包装类參数绑定时,要和包装pojo中的pojo类性的属性名一致,而list參数绑定时。要和包装pojo中的list类型的属性名一致。

    map绑定

    也通过在包装pojo中定义map类型属性。

    在包装类中定义Map对象,并加入get/set方法,action使用包装对象接收。

    • 包装类中定义Map对象例如以下:
    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());
    }

    作者@brianway很多其它文章:个人站点 | CSDN | oschina

  • 相关阅读:
    mysql导sql脚本
    oracle导sql脚本
    基于jdk proxy的动态代理模式
    vue组件之组件的生命周期
    vue组件之组件间的通信
    python-爬虫scrapy框架安装及基本使用
    mongdb的使用
    python-爬虫 多线程爬虫
    python-爬虫 爬虫利器BeautifulSoup
    python-爬虫lxml库
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7359589.html
Copyright © 2011-2022 走看看