仍然是一个小例子说明问题 (大体是从上篇参数数组篇该写的)

1. 前台页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>

<form action="${pageContext.request.contextPath }/getList.action" method="post">
查询条件:
<table width="100%" border=1>
<tr>
<td>id<input type="text" name="user.id" /></td>
<td>员工姓名<input type="text" name="user.name" /></td>
<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="${userList }" var="u" varStatus = "status">
<tr>
	<td><input type="checkbox"  name="ids" value=${u.id}/></td>
    <input type="hidden" name="userList[${status.index}].id" value =${u.id} >
	<td><input type="text" name= "userList[${status.index}].name" value = "${u.name }" ></td>
	<td><input type = "text" name = "userList[${status.index}].sex" value = "${u.sex }" > </td>
	<td><input type = "text" name = "userList[${status.index}].time" value = "<fmt:formatDate value="${u.time}" pattern="yyyy/MM/dd HH:mm:sss"/>"> </td>
	<td><a href="${pageContext.request.contextPath }/userEdit.action?id=">修改</a></td>
</tr>
</c:forEach>
</table>
<input type="submit" value = "提交">
</form>
</body>
</html>

08- springMVC 参数绑定 - list
这里注意: userList[${status.index}] 其中userList为集合的变量名,后台接受时就以该名称接收. 利用了forEach的 varStatus 属性. 并配置el表达式.

2. controller

	//接收list
	@RequestMapping(value = "/getList.action")
	public String getList(ArrayVo vo, ArrayList<User> userList, HttpServletRequest request,HttpServletResponse response,ModelMap modelMap) {
		System.out.println("包装类获取请求参数数组:"+vo.getUserList().size());
		for (User user : vo.getUserList()) {
			System.out.println("直接获取请求参数数组: "+user.getName());
			System.out.println("直接获取请求参数数组: "+user.getTime());
		return "success";
	}

3. 包装类vo

08- springMVC 参数绑定 - list

4. 页面点击提交以后 后台显示效果:

08- springMVC 参数绑定 - list

总结:

结果就是页面提交的一个User类型的集合成功传递到了后台. 通过包装类型的方式获取到了参数.
应用场景有: 前台的信息列表 可以进行对列表信息批量的修改.
总体比较简单, 一个简单例子足以说明问题. 到这里会有一个疑问, 日期数据有很多种格式,springmvc没办法把字符串转换成日期类型。我这里获取到没有经过format的格式转换 , 输出的却直接是date类型. 原因在于springmvc 还有一个自定义的绑定参数格式转换的配置. 后篇详细记录学习.

相关文章: