2013-08-28 4 views
45

Quelles sont les principales différences entre les classes suivantes Spring Framework?Quelles sont les différences entre Model, ModelMap et ModelAndView?

  • Model
  • ModelMap
  • ModelAndView

En utilisant Model.put(String,Object) nous pouvons accéder aux valeurs .jsp fichiers, mais aussi ModelMap.addAttribute(String,Object) a fait même chose. Je ne comprends pas la différence entre ces classes.

+0

double possible de http://stackoverflow.com/q/3344627/2607501 – Prancer

Répondre

54

Model est une interface en ModelMap est une classe.

ModelAndView est juste un conteneur à la fois pour un ModelMap et un objet de vue. Cela permet à un contrôleur de retourner les deux en tant que valeur unique.

+0

Après avoir creusé autour, la meilleure raison que j'ai trouvé d'utiliser un ModelMap (un peu enterré dans Vikas Harle de réponse et non représentée dans l'exemple) est que lorsque vous ajoutez des attributs à un ModelMap, vous pouvez laisser le nom d'attribut (clé) et le printemps va générer la clé d'attribut en fonction de la valeur d'attribut. https://docs.spring.io/spring/docs/4.3.14.RELEASE/spring-framework-reference/htmlsingle/#mvc-coc-modelmap – Tim

7

Modèle: est une interface contenant quatre addAttribute et une méthode merAttribute.

ModelMap: implémente l'interface de carte. Il contient également la méthode Map.

ModelAndView: Comme l'explique Bart, il permet à un contrôleur de retourner à la fois une valeur unique.

11

Les différences entre les modèles, ModelMap et ModelAndView

Modèle: Il est une interface. Il définit un détenteur pour les attributs du modèle et principalement conçu pour ajouter des attributs au modèle.

Exemple:

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

ModelMap: La mise en œuvre de la carte pour une utilisation lors de la construction des données de modèle pour une utilisation avec des appels enchaînées de tools.Supports de l'interface utilisateur et la génération de noms d'attribut modèle.

Exemple:

@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: Cette classe tient simplement à la fois pour permettre à un contrôleur pour revenir à la fois modèle et vue en une seule valeur de retour.

Exemple:

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

Il est un peu bizarre d'inclure cette première ligne. Comme, peu importe qui vous êtes aussi longtemps que vous pouvez répondre à la question. – Clonkex

+0

Devrions-nous ajouter Model ou ModelMap dans les paramètres de la méthode pour y accéder dans la vue. –

Questions connexes