1. 程式人生 > >SpringMVC裡的Model、Map、ModelMap以及ModelAndView

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例項。