springmvc使用list集合實現商品列表的批量修改
阿新 • • 發佈:2018-12-30
1將表單的資料繫結到List
1.1 需求
實現商品資料的批量修改。
1.2 需求分析
要想實現商品資料的批量修改,需要在商品列表中可以對商品資訊進行修改,餅乾且可以批量提交修改後的商品資料。
1.3 接收商品列表的pojo
List中存放物件,並將定義的List放在包裝類中,使用包裝pojo物件接收。
package com.huida.vo; import java.util.List; import com.huida.pojo.Items; public class QueryVo { private Items items;private Integer[] ids; private List<Items> itemList; public Items getItems() { return items; } public void setItems(Items items) { this.items = items; } public Integer[] getIds() { return ids; } public void setIds(Integer[] ids) {this.ids = ids; } public List<Items> getItemList() { return itemList; } public void setItemList(List<Items> itemList) { this.itemList = itemList; } }
1.4 Jsp改造
將批量修改的資料提交到updateAll.action中,由controller進行處理。將每一條資料儲存到itemList集合中。
<form action="${pageContext.request.contextPath }/updateAll.action" method="post"> 查詢條件: <table width="100%" border=1> <tr> <td><input type="submit" value="批量修改" /></td> </tr> </table> 商品列表: <table width="100%" border=1> <tr> <td>商品名稱</td> <td>商品價格</td> <td>生產日期</td> <td>商品描述</td> <td>操作</td> </tr> <c:forEach items="${itemList }" var="item" varStatus="status"> <tr> <td> <input type="checkbox" name="ids" value="${item.id}"> </td> <td><input type="text" name="itemList[${status.index }].name" value="${item.name }"></td> <td><input type="text" name="itemList[${status.index }].price" value="${item.price }"></td> <td><input type="text" name="itemList[${status.index }].createtime" value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss" />"></td> <td><input type="text" name="itemList[${status.index }].detail" value="${item.detail }"></td> <td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td> </tr> </c:forEach> </table> </form>
頁面為顯示為:
varStatus屬性常用引數總結下:
${status.index} 輸出行號,從0開始。
${status.count} 輸出行號,從1開始。
${status.current} 當前這次迭代的(集合中的)項
${status.first} 判斷當前項是否為集合中的第一項,返回值為true或false
${status.last} 判斷當前項是否為集合中的最後一項,返回值為true或false
begin、end、step分別表示:起始序號,結束序號,跳躍步伐。
1.5 controller
這裡不對資料庫進行操作。
@RequestMapping("updateAll") public String updateAll(QueryVo queryVo){ List<Items> list=queryVo.getItemList(); for(Items items:list){ System.out.println(items.getId()); System.out.println(items.getName()); } return null; }
注意:這裡是把 List<Items> itemsList 放在了包裝類QueryVo中,不能把 List<Items> itemsList 直接放在Controller的方法的形參上,會報錯。