springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
- springmvc学习笔记13-springmvc注解开发之集合类型參数绑定
- 数组绑定
- 需求
- 表现层实现
- list绑定
- 需求
- 表现层实现
- map绑定
- 数组绑定
本文主要介绍注解开发的集合类型參数绑定,包含数组绑定,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());
}
时间: 2024-10-24 22:24:29