1. 程式人生 > >SpringMvc Model與ModelAndView

SpringMvc Model與ModelAndView

在springmvc中,有兩種方式將資料由伺服器傳送到jsp

1.ModelAndView

  @RequestMapping("/testModelandView")
    public ModelAndView testModel(){
        ModelAndView modelAndView = new ModelAndView();
        //將資料存在了request域中
        modelAndView.addObject("name","DELL");
        modelAndView.setViewName("/result.jsp");
        return modelAndView;
    }

2.model(相當於一個map)

model的例項是springmvc框架自動建立並作為控制器方法引數傳入,使用者無需自己建立



    @RequestMapping("/testModel")
    public String testmodel2(Model model){
        //將資料存在了request域中
        model.addAttribute("name","lenovo");
        return "/result.jsp";
    }

兩種方法都是將資料存在了request域中      在jsp中可以使用el表示式進行取值

Model中的方法

1.addAttribute(String attributeName,Object attributeValue);新增鍵值屬性對

2.asMap();     將當前的model轉成map

 model.addAttribute("name","lenovo");
        System.out.println(model.asMap());
/*
*{name=lenovo}
*/

3.addAttribute(Object  o);將一個物件存在model當中

既然把物件存在了model中,說model相當於一個map,也就是把物件放在了map裡面,map是有key、value的,value是這個物件,那麼key是什麼?這個物件所在的類的類名,且把類名的第一個字母小寫作為其key值

@RequestMapping("/testModel")
    public String testmodel2(Model model){
        //將資料存在了request域中
        Goods mygoods = new Goods();
        mygoods.setName("筆記本");
        mygoods.setPrice(20);
        model.addAttribute(mygoods);
        System.out.println(model.asMap());
        return "/result.jsp";
    }
/*
*{goods=Goods{name='筆記本', price=20}}
*/

4.addAllAttribute(Map<String,?> hashmap);向model中新增一個map

將map中的內容複製到當前的model中,如果當前的model中含有相同的key值,則前者會被後者覆蓋

  @RequestMapping("/testModel")
    public String testmodel2(Model model){
        //將資料存在了request域中
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("name","dell");
        hashMap.put("price",20);
        hashMap.put("name","lenovo");
        model.addAllAttributes(hashMap);
        System.out.println(model.asMap());
        return "/result.jsp";
    }
/
*{price=20, name=lenovo}
*/

5.addAllAttribute(Collection list);向model中新增一個集合

以集合當中的型別作為key,將所提供的Collection中的屬性複製到model中,有相同型別,則會覆蓋

 @RequestMapping("/testModel")
    public String testmodel2(Model model){
        //將資料存在了request域中
        ArrayList<Object> list = new ArrayList<>();
        list.add("name");
        list.add(10);
        list.add("goods");
        model.addAllAttributes(list);
        System.out.println(model.asMap());
        return "/result.jsp";
    }
/
*{string=goods, integer=10}
*/

6.mergeAttribute(Map <String,?>  hashmap)

同addAllAttribute相同,不過是有key值相同的不會覆蓋以前的

7.containsAttribute(String  name)

判斷model中是否包含一個鍵值對    返回布林型別