springMVC-資料回顯
1 資料回顯
1.1 什麼資料回顯
提交後,如果出現錯誤,將剛才提交的資料回顯到剛才的提交頁面。
即表單提交失敗不需要再回到表單頁面重新填寫,原來提交的資料需要重新在頁面上顯示。
1.2 pojo資料回顯方法
1、springmvc預設對pojo資料進行回顯。
pojo資料傳入controller方法後,springmvc自動將pojo資料放到request域,key等於pojo型別(首字母小寫)
即修改資訊editItems()方法中的標識是 model.addAttribute("itemsCustom",itemsCustom);
editItems.jsp
提交修改的方法 public String editItemsSubmit(Modelmodel,HttpServletRequest request,Integer id,@Validated(value={ValidGrouop1.class}) ItemsCustom itemsCustom,BindingResult bindingResult)throws Exception
三者一致方可自動回顯
使用@ModelAttribute
1、繫結請求引數到pojo並且暴露為模型資料傳到檢視頁面
此方法可實現資料回顯效果。
@ModelAttribute("item") 中的item 對應ItemsCustom itemsCustom 的itemsCustom 為itemsCustom的別名,用於保持和頁面的"${item.name }" 中的item 一致實現資料回顯
// 商品修改提交
@RequestMapping("/editItemSubmit")
public String editItemSubmit(Model model , @ModelAttribute
頁面:
<tr>
<td>商品名稱</td>
<td><input type="text"name="name" value="${item.name}"/></td>
</tr>
<tr>
<td>商品價格</td>
<td><input type="text"name="price" value="${item.price}"/></td>
</tr>
如果不用@ModelAttribute也可以使用model.addAttribute("item", itemsCustom)完成資料回顯。
2、@ModelAttribute還可以將方法的返回值傳到頁面
在商品查詢列表頁面,通過商品型別查詢商品資訊。
在controller中定義商品型別查詢方法,最終將商品型別傳到頁面。
//商品分類
//itemTypes表示最終將方法的返回值放在request中的key
@ModelAttribute("itemtypes")
public Map<String, String>getItemTypes(){
Map<String,String> itemTypes = new HashMap<String,String>();
itemTypes.put("101", "數碼");
itemTypes.put("102", "母嬰");
return itemTypes;
}
頁面上可以得到itemTypes資料。
商品分類:
<select name="itemtype">
<c:forEach items="${itemtypes }" var="itemtype">
<option value="${itemtype.key}">${itemtype.value }</option>
</c:forEach>
</select>
3、使用最簡單方法使用model,可以不用@ModelAttribute
@RequestMapping("/editItemsSubmit")
public StringeditItemsSubmit(Model model
,HttpServletRequest request,
Integerid,
@ModelAttribute("items")@Validated(value={ValidGrouop1.class}) ItemsCustom itemsCustom,
BindingResultbindingResult)throwsException{
//獲取驗證錯誤資訊
if(bindingResult.hasErrors())
{
//輸出錯誤資訊
List<ObjectError>allerrors=bindingResult.getAllErrors();
for(ObjectError error:allerrors)
{
System.out.println(error.getDefaultMessage());
}
//錯誤資訊傳遞到頁面
model.addAttribute("allErrors",allerrors);
//使用model 的方式使資料回顯
model.addAttribute("items",itemsCustom);
return "items/editItems";
}
//呼叫service更新商品資訊,頁面需要將商品資訊傳到此方法
itemsService.updateItems(id,itemsCustom);
//重定向不用加跟路徑
//return "redirect:queryItems.action";
//頁面轉發
return "forward:queryItems.action";
}
1.3 簡單型別資料回顯
使用最簡單方法使用model。
model.addAttribute("id", id);