springmvc注解开发-高级之数据回显

1      数据回显

1.1      什么数据回显

提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。

 

1.2      pojo数据回显方法

 

1、springmvc默认对pojo数据进行回显。

pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写)

 

使用@ModelAttribute指定pojo回显到页面在request中的key

 

2、@ModelAttribute还可以将方法的返回值传到页面

 

1.1.1 简单数据类型

对于简单数据类型,如:Integer、String、Float等使用Model将传入的参数再放到request域实现显示。

如下:

   @RequestMapping(value="/editItems",method={RequestMethod.GET})

    public String editItems(Model model,Integer id)throws Exception{

      

       //传入的id重新放到request

       model.addAttribute("id", id);

 

 

1.1.2  pojo类型

springmvc默认支持pojo数据回显,springmvc自动将形参中的pojo重新放回request域中,request的key为pojo的类名(首字母小写),如下:

 

controller方法:

    @RequestMapping("/editItemSubmit")

    public String editItemSubmit(Integer id,ItemsCustom itemsCustom)throws Exception{

springmvc自动将itemsCustom放回request,相当于调用下边的代码:

model.addAttribute("itemsCustom", itemsCustom);

 

jsp页面:

页面中的从“itemsCustom”中取数据。

 

如果key不是pojo的类名(首字母小写),可以使用@ModelAttribute完成数据回显。

@ModelAttribute作用如下:

1、绑定请求参数到pojo并且暴露为模型数据传到视图页面

此方法可实现数据回显效果。

 

// 商品修改提交

    @RequestMapping("/editItemSubmit")

    public String editItemSubmit(Model model,@ModelAttribute("item") ItemsCustomitemsCustom)

   

页面:

<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("itemtypes")

    public Map getItemTypes(){

      

       Map itemTypes = newHashMap();

       itemTypes.put("101", "数码");

       itemTypes.put("102", "母婴");

      

       return itemTypes;

    }

 

页面:

商品类型:

<select name="itemtype">

    <c:forEach items="${itemtypes }"var="itemtype">

       <option value="${itemtype.key }">${itemtype.value }option>      

    c:forEach>

select>

 

 

你可能感兴趣的:(SpringMVC)