5.参数绑定概述(传智播客)

一.SpringMVC参数绑定过程

客户端请求的key/value数据,经过参数绑定器将key/value数据绑定到controller里handler的形参上。SpringMVC中,接收页面提交的数据是通过方法形参来接收,而不是在controller类中定义成员变更接收!!!!
在这里插入图片描述

二.默认支持的类型

1.HttpServletRequest
通过request对象获取请求信息

2.HttpServletResponse
通过response处理响应信息

3.HttpSession
通过session对象得到session中存放的对象

4.Model/ModelMap
model是一个接口,modelMap是一个接口实现 。 作用是将model数据填充到request域。

三.简单类型的参数绑定

通过@RequestParam对简单类型的参数进行绑定。 如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。 如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。
通过required属性指定参数是否必须要传入,如果设置为true,没有传入参数,将会报如下错误:
在这里插入图片描述

//jsp页面
<a href="${pageContext.request.contextPath}/items/selectItem?id=${item.itemId}">修改</a>

//handler
public ModelAndView selectItem(@RequestParam(value="id")Integer item_id) throws Exception{}

四.pojo类的参数绑定

页面中input的name属性和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo类的属性上。

//jsp页面
<tr>
   <td><input type="hidden" name="itemId" value="${item.itemId}"/></td>
   <td><input type="text" name="itemName" value="${item.itemName}"/></td>
   <td><input type="text" name="itemPrice" value="${item.itemPrice}"/></td>
   <td><input type="text" name="itemDetail" value="${item.itemDetail}"/></td>
   <td><input type="text" name="itemCreateDate" value="<fmt:formatDate value="${item.itemCreateDate}" pattern="yyyy-MM-dd hh:mm:ss"/>"/></td>
   <td><input type="submit" value="修改"></td>
</tr>

//handler
public ModelAndView updateItem(@RequestParam(value="itemId")Integer item_id,  ItemsCustom itemsCustom) throws Exception{}

五.pojo包装类的参数绑定

页面中input的name属性和controller的pojo包装类型形参中的属性名称一致。

//jsp页面
<td><input type="text" name="itemsCustom.itemName"/></td>

//handler
public ModelAndView queryItemByItemName(ItemsQueryVo itemsQueryVo) throws Exception{}

六.数组类型的参数绑定

页面中input的name属性和controller的数组类型形参中的名称一致。

//jsp页面
<td><input type="checkbox" name="items_id" value="${item.itemId}"/></td>

//handler
public ModelAndView deleteItemsByItemIds(Integer [] items_id) throws Exception{}

七.集合类型List的参数绑定

页面中input的name属性和controller的pojo包装类型形参中的属性名称一致。

//jsp页面
<c:forEach items="${itemsList}" var="item" varStatus="status">
   <tr>
      <td>${item.itemId}</td>
       <td><input type="hidden" name="itemsCustomList[${status.index}].itemId" value="${item.itemId}"/>
           <input type="text" name="itemsCustomList[${status.index}].itemName" value="${item.itemName}"/></td>
       <td><input type="text" name="itemsCustomList[${status.index}].itemPrice" value="${item.itemPrice}"/></td>
       <td><input type="text" name="itemsCustomList[${status.index}].itemDetail" value="${item.itemDetail}"/></td>
       <td><input type="text" name="itemsCustomList[${status.index}].itemCreateDate" value="<fmt:formatDate value="${item.itemCreateDate}" pattern="yyyy-MM-dd hh:mm:ss"/>"/></td>
   </tr>
</c:forEach>

//handler
public ModelAndView updateItems(ItemsQueryVo itemsQueryVo) throws Exception{}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值