87 votes

Qu'est-ce que Model dans ModelAndView de Spring MVC ?

Ayant cette fonction de base

protected ModelAndView handleRequestInternal(...) {
    ...
    return new ModelAndView("welcomePage", "WelcomeMessage", message);
}

Je sais que cela renverra modelandView. Je sais que welcomePage est mon nom de vue, ce qui signifie quelque chose comme welcomepage.jsp sera appelé.

Mais je ne sais pas ce qu'est la partie Modèle. Qu'est-ce que la partie WelcomeMessage y message et comment le modèle fonctionne dans ce scénario ?

119voto

limc Points 14557

Le modèle présente un espace réservé pour contenir les informations que vous souhaitez afficher sur la vue. Il peut s'agir d'une chaîne, comme dans l'exemple ci-dessus, ou d'un objet contenant un ensemble de propriétés.

Exemple 1

Si vous avez...

return new ModelAndView("welcomePage","WelcomeMessage","Welcome!");

... alors dans votre jsp, pour afficher le message, vous ferez:-

Hello Stranger! ${WelcomeMessage} // displays Hello Stranger! Welcome!

Exemple 2

Si vous avez...

MyBean bean = new MyBean();
bean.setName("Mike!");
bean.setMessage("Meow!");

return new ModelAndView("welcomePage","model",bean);

... alors dans votre jsp, vous pouvez faire:-

Hello ${model.name}! {model.message} // displays Hello Mike! Meow!

26voto

three-cups Points 1789
new ModelAndView("welcomePage", "WelcomeMessage", message);

est un raccourci pour

ModelAndView mav = new ModelAndView();
mav.setViewName("welcomePage");
mav.addObject("WelcomeMessage", message);

En regardant le code ci-dessus, vous pouvez voir que le nom de la vue est "welcomePage". Votre ViewResolver (généralement configuré dans .../WEB-INF/spring-servlet.xml ) traduira cela en une vue. La dernière ligne du code définit un attribut dans votre modèle ( addObject("WelcomeMessage", message) ). C'est là que le modèle entre en jeu.

16voto

Stephen C Points 255558

Tout cela est expliqué par la javadoc de l'application le constructeur . Il s'agit d'un constructeur pratique qui remplit le modèle avec une paire attribut/valeur.

Alors...

   new ModelAndView(view, name, value);

est équivalent à :

   Map model = ...
   model.put(name, value);
   new ModelAndView(view, model);

14voto

Tahir Hussain Mir Points 1690

Ici, dans cette affaire, nous avons 3 paramètres dans la méthode, à savoir ModelandView .
Selon cette question, le premier paramètre est facilement compréhensible. Il représente le Voir qui sera affiché au client.
Les deux autres paramètres sont comme Le pointeur y Le détenteur
On peut donc résumer la situation comme suit

ModelAndView( Vue, pointeur, détenteur ) ;

Le pointeur il suffit de pointer les informations dans le Le détenteur

Lorsque le Contrôleur lie le Voir avec cette information, alors dans le dit processus, vous pouvez utiliser Le pointeur en el JSP pour accéder aux informations stockées dans Le détenteur pour afficher cette information respectée au client.
Voici la représentation visuelle du processus respecté.

return new ModelAndView("welcomePage", "WelcomeMessage", message);

enter image description here

2voto

Abdel Olakara Points 11016

Eh bien, WelcomeMessage est juste un nom de variable pour le message (modèle réel avec des données). Fondamentalement, vous liez le modèle avec la page de bienvenue ici. Le modèle (message) sera disponible dans welcomePage.jsp comme WelcomeMessage. Voici un exemple plus simple :

ModelAndView("hello","myVar", "Hello World!");

Dans ce cas, mon modèle est une simple chaîne de caractères (dans les applications, ce sera un POJO avec des données extraites de la base de données ou d'autres sources). Je l'assigne à myVar et ma vue est hello.jsp. Maintenant, maVar est disponible pour moi dans hello.jsp et je peux l'utiliser pour l'affichage.

Dans la vue, vous pouvez accéder aux données à travers :

${myVar}

De même, vous pourrez accéder au modèle par la variable WelcomeMessage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X