springmvc學習筆記(13)-springmvc註解開發之集合類型參數綁定

springmvc學習筆記(13)-springmvc註解開發之集合類型參數綁定

標籤: springmvcjava


[TOC]git


本文主要介紹註解開發的集合類型參數綁定,包括數組綁定,list綁定以及map綁定github

數組綁定

需求

商品批量刪除,用戶在頁面選擇多個商品,批量刪除。spring

表現層實現

關鍵:將頁面選擇(多選)的商品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>中,好比:成績錄入(錄入多門課成績,批量提交),mvc

本例子需求:批量商品修改,在頁面輸入多個商品信息,將多個商品信息提交到controller方法中。app

表現層實現

  • controller方法定義:
    • 一、進入批量商品修改頁面(頁面樣式參考商品列表實現)
    • 二、批量修改商品提交

使用List接收頁面提交的批量數據,經過包裝pojo接收,在包裝pojo中定義list<pojo>屬性jsp

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

相關文章
相關標籤/搜索