SpringMVC裡的Model、Map、ModelMap以及ModelAndView
首先理解,model從哪裡來?
SpringMVC內部使用一個org.springframework.ui.Model介面儲存的資料模型,它的功能類似於Java.uitl.Map,但是比Map更好用 org.springframework.ui.ModelMap實現Map介面。
SpringMVC在呼叫方法前會建立一個隱含的資料模型,作為模型資料的儲存容器, 成為”隱含模型”。
如果處理方法入參為Map或者Model型別,SpringMVC會將隱含模型的引用傳遞給這些入參。
spring Web MVC 提供Model、Map或ModelMap讓我們能去暴露渲染檢視需要的模型資料。
@RequestMapping(value = "/model")
public String createUser(Model model, Map model2, ModelMap model3) {
model.addAttribute("a", "a");
model2.put("b", "b");
model3.put("c", "c");
System.out.println(model == model2);
System.out.println(model2 == model3);
return "success";}
雖然此處注入的是三個不同的型別(Model model, Map model2, ModelMap model3),但三者是同一個物件。
AnnotationMethodHandlerAdapter和RequestMappingHandlerAdapter將使用BindingAwareModelMap作為模型物件的實現,即此處我們的形參(Model model, Map model2, ModelMap model3)都是同一個BindingAwareModelMap例項。
另外關於Model和ModelAndView
@RequestMapping(value = "/mergeModel")
public ModelAndView mergeModel(Model model) {
model.addAttribute("a", "a");//①新增模型資料
ModelAndView mv = new ModelAndView("success");
mv.addObject("a", "update");//②在檢視渲染之前更新③處同名模型資料
model.addAttribute("a", "new");//③修改①處同名模型資料
//檢視頁面的a將顯示為"update" 而不是"new"
return mv;
}
從程式碼中我們可以總結出功能處理方法的返回值中的模型資料(如ModelAndView)會 合併 功能處理方法形式引數中的模型資料(如Model),但如果兩者之間有同名的,返回值中的模型資料會覆蓋形式引數中的模型資料。
在處理方法的方法體中,可以使用如下方法新增資料模型:
[ModelAndView]
addObject(String attributeName,Object attributeValue);
addAllObject(Map<String,?> modelMap);
[Model]
model.addAttribute("person", person)
[Map]
put(String attributeName,Object attributeValue);
Tips:
放到Map中的資料如何傳值到前臺,以及前臺如何取值?
ModelMap物件主要用於傳遞控制方法處理資料到結果頁面,也就是說我們把結果頁面上需要的資料放到ModelMap物件中即可,他的作用類似於request物件的setAttribute方法的作用,用來在一個請求過程中傳遞處理的資料。
① 通過以下方法向頁面傳遞引數:
addAttribute(String key,Object value);
② JSP頁面取值:
${requestScope.key} 。
轉自:http://blog.csdn.net/J080624/article/details/52817498?locationNum=2&fps=1
相關文章
- Spring中Model、ModelMap及ModelAndView之間的區別SpringView
- 架構師學習-springmvc-ModelMap、Model、Map(四十六)架構SpringMVC
- ModelAndView 配置與使用View
- ModelAndView導包路徑問題View
- springboot中擴充套件ModelAndView實現asp.net core mvc的ActionResult效果Spring Boot套件ViewASP.NETMVC
- [轉載]SpringMVC的Model引數繫結方式SpringMVC
- SpringMVC 面試題目以及答案SpringMVC面試題
- mybatis 提示404跳轉異常因為spring下面有兩個modelandview,坑爹又坑娘MyBatisSpringView
- springmvc ajax請求以及jsonSpringMVCJSON
- 【SSM 學習筆記 javaWeb IDEA】ssm的controller 傳ModelAndView資料 給前臺html的ajax(不用@ResponseBody)SSM筆記JavaWebIdeaControllerViewHTML
- SAP Gateway Service Builder 裡的 OData Model 定義方式GatewayUI
- lambda map filter reduce zip 以及列表推導Filter
- 【SpringMVC】RESTFul簡介以及案例實現SpringMVCREST
- 深入學習SpringMVC以及學習總結SpringMVC
- SpringMVC原始碼解析 - HandlerAdater - ModelAndViewContainer上下文容器SpringMVC原始碼ViewAI
- savedInstanceState和 fragment.setRetainInstance以及 viewmodel的區別FragmentAIView
- 特斯拉 Model S 首次中國亮相 新店建在太古裡?
- 【Map】Echarts之iphone銷量地圖的使用以及詳細配置EchartsiPhone地圖
- SpringMVC何時載入的controller裡的mapping方法SpringMVCControllerAPP
- Java 中的map - The Map Interface.Java
- 初級Python中map函式的運用以及列表轉字串的方法Python函式字串
- Android Jetpack元件 - ViewModel,LiveData使用以及原理AndroidJetpack元件ViewLiveData
- 在SAP Data Intelligence Modeler裡建立新的pipelineIntel
- SpringMvc - SpringMvc的執行流程SpringMVC
- [提問交流]新手求助啊get_document_model方法在哪裡定義的?
- java的各種集合為什麼不安全(List、Set、Map)以及代替方案Java
- 【論文閱讀】CVPR2021: MP3: A Unified Model to Map, Perceive, Predict and PlanNifi
- 4種方法讓SpringMVC接收多個物件 List 表單提交,以BeanListModel接收SpringMVC物件Bean
- Java裡連線字串的幾種方式以及優缺點Java字串
- springmvc高可用響應物件以及全域性異常處理類的編寫SpringMVC物件
- java中Map根據Map的value取keyJava
- JSON物件中的JSONObject和JSONArray以及與Map、String、陣列的轉化JSON物件Object陣列
- Java集合中List,Set以及Map等集合體系詳解(史上最全)Java
- 不在models.py中的models
- 在JavaScript函數語言程式設計裡使用Map和Reduce方法JavaScript函數程式設計
- SAP CRM產品主資料應用裡value node和model node的轉換
- Go中的MapGo
- map的實現