1. 程式人生 > >springMVC-資料回顯

springMVC-資料回顯

1        資料回顯

1.1    什麼資料回顯

提交後,如果出現錯誤,將剛才提交的資料回顯到剛才的提交頁面。

即表單提交失敗不需要再回到表單頁面重新填寫,原來提交的資料需要重新在頁面上顯示。

1.2    pojo資料回顯方法

1、springmvc預設對pojo資料進行回顯。

pojo資料傳入controller方法後,springmvc自動將pojo資料放到request域,key等於pojo型別(首字母小寫)

修改資訊editItems()方法中的標識是   model.addAttribute("itemsCustom",itemsCustom);

       editItems.jsp

頁面接收的標識為<input type="hidden"name="id" value="${itemsCustom.id}"/>

提交修改的方法    public String editItemsSubmit(Modelmodel,HttpServletRequest request,Integer id,@Validated(value={ValidGrouop1.class})  ItemsCustom itemsCustom,BindingResult bindingResult)throws Exception

        三者一致方可自動回顯

使用@ModelAttribute

指定pojo回顯到頁面在request中的key

1、繫結請求引數到pojo並且暴露為模型資料傳到檢視頁面

此方法可實現資料回顯效果。

@ModelAttribute("item") 中的item 對應ItemsCustom itemsCustom 的itemsCustom 為itemsCustom的別名,用於保持和頁面的"${item.name }" 中的item 一致實現資料回顯

// 商品修改提交

   @RequestMapping("/editItemSubmit")

   public String editItemSubmit(Model model , @ModelAttribute

("item") ItemsCustom itemsCustom)

頁面:

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