Récupération d'un modèle de ModelAndView en jsp
-
19-09-2019 - |
Question
Je suis en train actuellement de revenir un modèle de onSubmit () dans mon contrôleur. Je puis tente de récupérer dans mon jsp.
par exemple
Map model = new HashMap();
model.put("errors", "example error");
return new ModelAndView(new RedirectView("login.htm"), "model", model);
puis récupérer avec
<c:out value="${model.errors}"/>
Toutefois, cela n'affiche rien. il va à la redirectview correcte et ne délivre pas d'erreur, mais le texte n'apparaît pas.
Toute aide sera très appréciée.
Merci
La solution
Qu'est-ce que RedirectView n'envoie un en-tête de redirection vers le navigateur si le navigateur effectue une recharge complète de la page, comme un modèle de résultat ne vous emballez pas là-bas (comme il est géré maintenant par le contrôleur de connexion avec son propre modèle).
Qu'est-ce que vous pouvez faire est de passer des erreurs par demande attributs:
Dans votre views.properties:
loginController.(class)=org.springframework.web.servlet.view.InternalResourceView
loginController.url=/login.htm
Alors, au lieu de retour RedirectView:
request.setAttribute("errors", "example errors");
return new ModelAndView("loginController");
Et dans votre contrôleur connexion pour vérifier cet attribut et l'ajouter au modèle.
Mise à jour: Sans utiliser views.properties:
request.setAttribute("errors", "example errors");
return new ModelAndView(new InternalResourceView("/login.htm"));
Vous pouvez aussi ajouter (une autre) vue interne résolveur à votre App-servlet.xml (Note de l'API: Lorsque enchaînant ViewResolvers, un InternalResourceViewResolver doit toujours être le dernier, car il va tenter de résoudre un nom de vue, peu importe que ce soit la ressource sous-jacente existe réellement).
<bean id="viewResolver2"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
</bean>
Et puis il suffit d'utiliser:
request.setAttribute("errors", "example errors");
return new ModelAndView("/login.htm");