注意:如果方法聲明了注解@ResponseBody ,則會直接將返回值輸出到頁面。
首先介紹ModelMap[Model]和ModelAndView的作用
Model 是一個接口, 其實現(xiàn)類為ExtendedModelMap,繼承了ModelMap類。
ModelMap
ModelMap對象主要用于傳遞控制方法處理數(shù)據(jù)到結(jié)果頁面,也就是說我們把結(jié)果頁面上需要的數(shù)據(jù)放到ModelMap對象中即可,他的作用類似于request對象的setAttribute方法的作用,用來在一個請求過程中傳遞處理的數(shù)據(jù)。通過以下方法向頁面?zhèn)鬟f參數(shù):
addAttribute(String key,Object value);
在頁面上可以通過el變量方式$key或者bboss的一系列數(shù)據(jù)展示標簽獲取并展示modelmap中的數(shù)據(jù)。
modelmap本身不能設置頁面跳轉(zhuǎn)的url地址別名或者物理跳轉(zhuǎn)地址,那么我們可以通過控制器方法的返回值來設置跳轉(zhuǎn)url地址別名或者物理跳轉(zhuǎn)地址。
ModelAndView
ModelAndView對象有兩個作用:
作用一 設置轉(zhuǎn)向地址,如下所示(這也是ModelAndView和ModelMap的主要區(qū)別)
ModelAndView view = new ModelAndView("path:ok");
作用二 用于傳遞控制方法處理結(jié)果數(shù)據(jù)到結(jié)果頁面,也就是說我們把需要在結(jié)果頁面上需要的數(shù)據(jù)放到ModelAndView對象中即可,他的作用類似于request對象的setAttribute方法的作用,用來在一個請求過程中傳遞處理的數(shù)據(jù)。通過以下方法向頁面?zhèn)鬟f參數(shù):
addObject(String key,Object value);
在頁面上可以通過el變量方式$key或者bboss的一系列數(shù)據(jù)展示標簽獲取并展示ModelAndView中的數(shù)據(jù)。
作用介紹完了后,接下來介紹使用方法
ModelMap
ModelMap的實例是由bboss mvc框架自動創(chuàng)建并作為控制器方法參數(shù)傳入,用戶無需自己創(chuàng)建。
public String xxxxmethod(String someparam,ModelMap model)
{
//省略方法處理邏輯若干
//將數(shù)據(jù)放置到ModelMap對象model中,第二個參數(shù)可以是任何java類型
model.addAttribute("key",someparam);
......
//返回跳轉(zhuǎn)地址
return "path:handleok";
}
ModelAndView
ModelAndView的實例是由用戶手動創(chuàng)建的,這也是和ModelMap的一個區(qū)別。
public ModelAndView xxxxmethod(String someparam)
{
//省略方法處理邏輯若干
//構(gòu)建ModelAndView實例,并設置跳轉(zhuǎn)地址
ModelAndView view = new ModelAndView("path:handleok");
//將數(shù)據(jù)放置到ModelAndView對象view中,第二個參數(shù)可以是任何java類型
view.addObject("key",someparam);
......
//返回ModelAndView對象view
return view;
}
到此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"));
}