07 -springMVC参数绑定 - 数组


读完本篇你可以学到:

  1. springMVC前台是如何向后台传递数组参数,以及后台是如何接收参数的.
  2. 简单提到了 页面中时间类型如何格式化(用到了jsp的标签库fmt)
  3. 前台页面以列表方式展示后台传递过来的集合

前边有了简单的参数绑定, 但是在实际使用中并不能满很好则业务需求, 就比如页面上有个列表一类的,想做个批量的删除,这个时候简单绑定就显得心有余而力不足了.
这个时候就要使用数组或者集合来向后台传递参数了
写个小栗子来说明问题:

1. jsp页面部分

<%@ 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 }/getArray.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">
<tr>
	<td><input type="checkbox"  name="arrayId" value="${u.id}"/></td>
	<td>${u.name }</td>
	<td>${u.sex }</td>
	<td><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>

简单扩展下时间利用jsp的fmt标签库格式化输出:

//  第一步 引入jsp的fmt标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
// 中间的略...
// 格式化输出
<td><fmt:formatDate value="${u.time}" pattern="yyyy/MM/dd HH:mm:sss"/></td>

注: 1. 这里的年月日以及时分秒之间放入连接符可以换成其他的比如 “-”
2. 使用jstl 的时候不要忘了导入jstl核心库.
显示效果如下 :
在这里插入图片描述

2. 页面填充数据

这了为了方便直接造的数据, 没有走数据库

	@RequestMapping(value = "/demoList.action")
	public String demoList(HttpServletRequest request,HttpServletResponse response,ModelMap modelMap) {
		List<User> userList = new ArrayList<User>();
		User u1 = new User();
		u1.setId(1);
		u1.setName("老大");
		u1.setSex("男");
		u1.setTime(new Date());
		userList.add(u1);
		
		User u2 = new User();
		u2.setId(2);
		u2.setName("老二");
		u2.setSex("女");
		u2.setTime(new Date());
		userList.add(u2);
		
		User u3 = new User();
		u3.setId(3);
		u3.setName("老三");
		u3.setSex("男");
		u3.setTime(new Date());
		userList.add(u3);
		modelMap.addAttribute("userList",userList);
		return "listInfo";
		
	}

3.页面提交的controller

页面点击提交后的处理方法:
这里仅仅做到能显示前台传递过来的参数信息的效果即可.

@RequestMapping(value = "/getArray.action")
	public String getArray(ArrayVo vo, Integer[] arrayId, HttpServletRequest request,HttpServletResponse response,ModelMap modelMap) {
		System.out.println("包装类获取请求参数数组:"+vo.getArrayId().length);
		for (Integer string : arrayId) {
			System.out.println("直接获取请求参数数组: "+string);
		}
		return "success";
	}

这里使用了两种方式获取了数组参数 , 需要注意的是 用ArrayVo对象的方式接收数组,属性名要同页面的name值相同

4. 包装类ArrayVo

public class ArrayVo {
       //属性名要同页面的name值相同
	private Integer[] arrayId;
	public Integer[] getArrayId() {
		return arrayId;
	}
	public void setArrayId(Integer[] arrayId) {
		this.arrayId = arrayId;
	}
}

5. 页面提交效果

页面上选中3个复选框点击提交,后台显示如下
在这里插入图片描述

Controller方法中可以用Integer[]接收,或者pojo的Integer[]属性接收。这里示例两种方式一起使用了,实际中两种方式任选其一即可.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值