Spring框架中ModelAndView、Model、ModelMap區別

首先介紹ModelMap[Model]和ModelAndView的作用

Model 是一個接口, 其實現類爲ExtendedModelMap,繼承了ModelMap類。 
ModelMap
ModelMap對象主要用於傳遞控制方法處理數據到結果頁面,也就是說我們把結果頁面上需要的數據放到ModelMap對象中即可,他的作用類似於request對象的setAttribute方法的作用,用來在一個請求過程中傳遞處理的數據。通過以下方法向頁面傳遞參數:
addAttribute(String key,Object value);
在頁面上可以通過el變量方式$key或者bboss的一系列數據展示標籤獲取並展示modelmap中的數據。
modelmap本身不能設置頁面跳轉的url地址別名或者物理跳轉地址,那麼我們可以通過控制器方法的返回值來設置跳轉url地址別名或者物理跳轉地址。

ModelAndView
ModelAndView對象有兩個作用:
作用一 設置轉向地址,如下所示(這也是ModelAndView和ModelMap的主要區別)
ModelAndView view = new ModelAndView("path:ok");

作用二 用於傳遞控制方法處理結果數據到結果頁面,也就是說我們把需要在結果頁面上需要的數據放到ModelAndView對象中即可,他的作用類似於request對象的setAttribute方法的作用,用來在一個請求過程中傳遞處理的數據。通過以下方法向頁面傳遞參數:
addObject(String key,Object value);

在頁面上可以通過el變量方式$key或者bboss的一系列數據展示標籤獲取並展示ModelAndView中的數據。

作用介紹完了後,接下來介紹使用方法


ModelMap
ModelMap的實例是由bboss mvc框架自動創建並作爲控制器方法參數傳入,用戶無需自己創建。

  1. public String xxxxmethod(String someparam,ModelMap model)  
  2. {  
  3.      //省略方法處理邏輯若干  
  4.       //將數據放置到ModelMap對象model中,第二個參數可以是任何java類型  
  5.       model.addAttribute("key",someparam);  
  6.      ......  
  7.      //返回跳轉地址  
  8.       return "path:handleok";  
  9. }  



ModelAndView
ModelAndView的實例是由用戶手動創建的,這也是和ModelMap的一個區別。

  1. public ModelAndView xxxxmethod(String someparam)  
  2. {  
  3.      //省略方法處理邏輯若干  
  4.       //構建ModelAndView實例,並設置跳轉地址  
  5.       ModelAndView view = new ModelAndView("path:handleok");  
  6.       //將數據放置到ModelAndView對象view中,第二個參數可以是任何java類型  
  7.       view.addObject("key",someparam);  
  8.      ......  
  9.      //返回ModelAndView對象view  
  10.       return view;  
  11. }  



到此bboss mvc中ModelMap和ModelAndView兩個對象的作用和使用方法介紹完畢

如下爲我自己寫的測試代碼

複製代碼
@RequestMapping(value = "/demo",method = RequestMethod.GET)
    public ModelAndView getBusinessIdListByIp(@RequestParam("ip") String ip,@RequestParam("phoneId") String phoneId,Model model){
        ModelAndView mav = new ModelAndView();
        model.addAttribute("ip", ip);
        model.addAttribute("phoneId", phoneId);
        mav.addObject(model);
        mav.setViewName("user/mav");
        return mav;
    }
    
    @RequestMapping(value = "/demo2",method = RequestMethod.GET)
    public ModelAndView getBusinessIdListByIp(){
        return new ModelAndView("user/mav","key",new String("makeHappy"));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章