2013-08-28 12 views
45

Jakie są główne różnice między następującymi klasami ?Jakie są różnice między Modelem, ModelMap i ModelAndView?

  • Model
  • ModelMap
  • ModelAndView

Korzystanie Model.put(String,Object) możemy uzyskać dostęp do wartości w .jsp plików, ale również ModelMap.addAttribute(String,Object) zrobił to samo. Nie rozumiem różnicy między tymi klasami.

+0

Możliwy duplikat http://stackoverflow.com/q/3344627/2607501 – Prancer

Odpowiedz

54

Model to interfejs, podczas gdy ModelMap jest klasą.

ModelAndView to tylko kontener dla obiektu ModelMap i widoku. Pozwala to kontrolerowi zwrócić oba jako jedną wartość.

+0

Po kopania wokół, najlepszym powodem, że znalazłem użyć ModelMap (niby pochowany w Vikas Harle-tych odpowiedź i nie pokazano w przykładzie) polega na tym, że dodając atrybuty do mapy modelu, można pominąć nazwę atrybutu (klucz), a sprężyna wygeneruje klucz atrybutu na podstawie wartości atrybutu. https://docs.spring.io/spring/docs/4.3.14.RELEASE/spring-framework-reference/htmlsingle/#mvc-coc-modelmap – Tim

7

Model: jest interfejsem, który zawiera cztery metody addAttribute i jedną metodę merAttribute.

ModelMap: implementuje interfejs mapy. Zawiera również metodę Map.

ModelAndView: Jak wyjaśnia Bart, pozwala on kontrolerowi powrócić zarówno jako pojedyncza wartość.

11

Różnice między Model, ModelMap i ModelAndView

Model: Jest to interfejs. Definiuje uchwyt dla atrybutów modelu i przede wszystkim służy do dodawania atrybutów do modelu.

Przykład:

@RequestMapping(method = RequestMethod.GET) 
    public String printHello(Model model) { 
      model.addAttribute("message", "Hello World!!"); 
      return "hello"; 
     } 

ModelMap: wdrożenia MAP do stosowania przy budowie modelu danych do użytku z tools.Supports UI łańcuchu połączeń i generacji modelu nazw atrybutów.

Przykład:

@RequestMapping("/helloworld") 
public String hello(ModelMap map) { 
    String helloWorldMessage = "Hello world!"; 
    String welcomeMessage = "Welcome!"; 
    map.addAttribute("helloMessage", helloWorldMessage); 
    map.addAttribute("welcomeMessage", welcomeMessage); 
    return "hello"; 
} 

ModelAndView: Klasa ta posiada jedynie zarówno umożliwiają kontroler powrócić zarówno model i widok w jednym zwracanej wartości.

Przykład:

@RequestMapping("/welcome") 
public ModelAndView helloWorld() { 
     String message = "Hello World!"; 
     return new ModelAndView("welcome", "message", message); 
    } 
+2

To trochę dziwne, aby dołączyć tę pierwszą linię. Tak naprawdę to nie ma znaczenia, kim jesteś, dopóki możesz odpowiedzieć na pytanie. – Clonkex

+0

Należy dodać Model lub ModelMap w parametrach metody, aby uzyskać do niego dostęp w widoku. –

Powiązane problemy