Model,ModelMap,ModelAndView用法介紹
1,Model
Model只是用來傳輸資料的,並不會進行業務的定址。Model是一個介面,其實現類為ExtendedModelMap,繼承了ModelMap類。一般來說,可以用model來接收各種型別的資料,如果使用來接收一組資料List那麼這個時候的model實際上是ModelMap。Model通過addAttribute方法向頁面傳遞引數。
Model的例項是spirng mvc框架來自動建立並作為控制器方法引數傳入,使用者無需自己建立,需要return 返回指定的頁面路徑。
@RequestMapping("testModel")
public String testModel(Model model) {
// 接收查詢的資訊
List<Category> cs1= categoryService.list();
// 封裝了查詢的資料
model.addAttribute("test", cs1);
//重要!!需要給出返回model跳轉的路徑
return "testModel";
}
2,ModelMap
ModelMap本身不能設定頁面跳轉的url地址別名或者物理跳轉地址,那麼我們可以通過控制器方法的字串返回值來設定跳轉url地址別名或者物理跳轉地址。request物件的setAttribute方法的作用(用來在一個請求過程中傳遞處理的資料),用法等同於Model。(通過addAttribute方法向頁面傳遞引數)
ModelMap的例項是spirng mvc框架來自動建立並作為控制器方法引數傳入,使用者無需自己建立,需要return 返回指定的頁面路徑。
@RequestMapping("testModelMap")
public String testModelMap(ModelMap model) {
// 接收查詢的資訊
List<Category> cs2= categoryService.list();
// 封裝了查詢的資料
model.addAttribute("test", cs2);
//重要!!需要給出返回model跳轉的路徑
return "testModelMap";
}
3,ModelAndView
新增模型資料用addObject,設定檢視setViewName。ModelAndView的例項是需要我們手動new的,ModelAndView 可以自己定址,只需要return 返回其物件即可。
@RequestMapping("testModelAndView")
public ModelAndView testModelAndView(){
//建立一個模型檢視物件
ModelAndView mav = new ModelAndView();
//獲取到查詢的資料
List<Category> cs= categoryService.list();
// //將資料放置到ModelAndView物件view中,第二個引數可以是任何java型別
mav.addObject("cs", cs);
// 放入jsp路徑
mav.setViewName("testModelAndView");
//返回ModelAndView物件mav
return mav;
}