Comment appeler un contrôleur Spring MVC en jsp
J'aimerais inclure une page jsp par exemple
<ui:include src="/WEB-INF/jsp/header.jsp" />
mais mon en-tête.jsp avoir des variables et j'ai besoin d'un contrôleur pour initialiser les thèses de variables, il est un moyen d'appeler un contrôleur et d'inclure le contrôleur méthode jsp dans une autre jsp ?
Par exemple;
<%@tag description="Overall Page template" pageEncoding="UTF-8"%>
<%@attribute name="header" fragment="true"%>
<%@attribute name="footer" fragment="true"%>
<html>
<body>
<div id="pageheader">
//include my header controller
<ui:include src="/WEB-INF/jsp/header.jsp" />
</div>
<div id="body">
<jsp:doBody />
</div>
<div id="pagefooter">
//include my footer controller
</div>
</body>
</html>
en-tête.jsp
Header
${test}
mon en-tête de la méthode
public String header(Map<String, Object> model){
model.put("test", "test");
return "header";
}
Mais le contrôleur n'est pas utilisé et ${test}
est vide
OriginalL'auteur Ajouve | 2013-12-24
Vous devez vous connecter pour publier un commentaire.
Je pense que, si vous appelez un MVC contrôleur à partir d'un MVC vue, votre demande de frein commune MVC principes. Votre code sera difficile à déboguer, il est difficile de tester et difficile à comprendre par les autres.
Probablement, serait une meilleure idée pour préparer les attributs de modèle pour toutes les pièces de votre point de vue (la partie principale de la page, en-tête et pied de page) dans un contrôleur. Le modèle que vous passez à une JSP d'affichage est disponible dans inclus coutume balises JSP et les Jsp.
Vous pouvez utiliser un @ModelAttribute méthode annotée de fournir les attributs de quelques méthodes de contrôleur à la fois.
Vous pouvez utiliser Tags JSP au lieu de pages JSP pour définir votre en-tête et pied de page (au moins c'est comment je le fais dans mon application).
OriginalL'auteur Alexey
Tout d'abord, votre JSP doit pas "appeler" directement à n'importe quel contrôleur.
Deuxièmement, je vois que vous êtes à l'aide de Spring framework, et au Printemps, à partir de n'importe quel contrôleur à JSP, il est à seulement 1 modèle de l'objet passé à la JSP. Par conséquent, si dans l'en-tête, vous devez initialiser un autre modèle, vous devez appeler l'URL du contrôleur au lieu d'appeler l'en-tête.jsp.
OriginalL'auteur Wins
Les autres réponses déjà expliqué que le modèle doit être renseigné par un contrôleur. ... Si vous avez besoin des mêmes variables du modèle à toutes les pages, par exemple dans l'en-tête ou le pied de page, l'une courante est d'enrichir le modèle en une seule HandlerInterceptor, au lieu de la méthode du contrôleur.
mauvaise méthode, l'utilisation postHandle!
OriginalL'auteur Ralph