1. 程式人生 > >9.引數繫結總結(傳智播客)

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>