9.参数绑定总结(传智播客)

一.SpringMVC参数绑定过程

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

二.默认支持的类型

1.HttpServletRequest
通过request对象获取请求信息
2.HttpServletResponse
通过response处理响应信息
2.HttpSession
通过session对象得到session中存放的对象
3.Model/ModelMap
model是一个接口,modelMap是一个接口实现 。 作用是将model数据填充到request域。

三.简单类型的参数绑定

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

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

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

四.pojo类的参数绑定

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

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

<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>

五.pojo包装类的参数绑定

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

public ModelAndView queryItemByItemName(ItemsQueryVo itemsQueryVo) throws Exception{}

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

六.数组类型的参数绑定

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

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

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

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

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

public ModelAndView updateItems(ItemsQueryVo itemsQueryVo) throws Exception{}

<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>

猜你喜欢

转载自blog.csdn.net/u010286027/article/details/84228601