1、绑定数组(批量删除)
1.1 需求
在商品列表页面选中多个商品,然后删除。
1.2需求分析
此功能要求商品列表页面中的每个商品前有一个checkbook,选中多个商品后点击删除按钮把商品id传递给Controller,根据商品id删除商品信息。
1.3 jsp实现
<c:forEach items="${itemList }" var="item">
<tr>
<td><input name="ids" value="${item.id}" type="checkbox"></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 }/itemEdit.action?id=${item.id}">修改</a></td>
</tr>
</c:forEach>
1.4 QueryVo
private String[] ids;
public String[] getIds() {
return ids;
}
public void setIds(String[] ids) {
this.ids = ids;
}
1.5 Controller
@RequestMapping("/deleteAll")
private void deleteAll(QueryVo vo)throws Exception{
System.out.println(vo);
}
2、将表单的数据绑定到List
2.1 需求
实现商品数据的批量修改
2.2 需求分析
要想实现商品数据的批量修改,需要在商品列表中可以对商品信息进行修改,并且可以批量提交修改后的商品数据。
2.3 jsp页面
注意:name="itemsList[${status.index }].name" 中的itemsList不要和遍历中de ${itemList}名字冲突
name中的写法
<c:forEach items="${itemList }" var="item" varStatus="status">
<tr>
<!-- 批量删除和修改的复选框 -->
<td><input type="checkbox" name="ids" value="${item.id }"></td>
<td><input type="hidden" name="itemsList[${status.index }].name" value="${item.name }">${item.name }</td>
<td><input type="hidden" name="itemsList[${status.index }].price" value="${item.price }">${item.price }</td>
<td><input type="hidden" name="itemsList[${status.index }].createtime" value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>">
<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
<td><input type="hidden" name="itemsList[${status.index}].detail" value="${item.detail }">${item.detail }</td>
<td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>
</tr>
</c:forEach>
2.4 QueryVo
public class QueryVo {
private Items items;
// 批量删除使用
private String[] ids;
// 批量修改使用
List<Items> itemsList;
public List<Items> getItemsList() {
return itemsList;
}
public void setItemsList(List<Items> itemsList) {
this.itemsList = itemsList;
}
2.5 varStatus属性常用参数总结下:
${status.index} 输出行号,从0开始。
${status.count} 输出行号,从1开始。
${status.current} 当前这次迭代的(集合中的)项
${status.first} 判断当前项是否为集合中的第一项,返回值为true或false
${status.last} 判断当前项是否为集合中的最后一项,返回值为true或false
begin、end、step分别表示:起始序号,结束序号,跳跃步伐。