Frage

Ich versuche zur Zeit ein Modell aus onSubmit () in meinem Controller zurückzukehren. Ich dann versuche, dies in meinem jsp abgerufen werden.

zum Beispiel

Map model = new HashMap();
model.put("errors", "example error");
return new ModelAndView(new RedirectView("login.htm"), "model", model);

und Abrufen es dann mit

<c:out value="${model.errors}"/>

Allerdings ist dies alles nicht angezeigt werden soll. es geht in die richtige redirectview und erteilt keine Fehler, aber der Text nicht angezeigt wird.

Jede Hilfe wird sehr geschätzt werden.

Dank

War es hilfreich?

Lösung

Was RedirectView tut sendet eine Umleitung Header an den Browser so Browser tut ein komplettes Neuladen der Seite, als ein Ergebnis Modell dort nicht durch bekommt (wie es jetzt von Login-Controller mit einem eigenen Modell gehandhabt wird).

Was Sie tun können, ist Fehler durch Anfrage Attribute übergeben:

In Ihrem views.properties:

loginController.(class)=org.springframework.web.servlet.view.InternalResourceView
loginController.url=/login.htm

Dann statt RedirectView Rückkehr:

request.setAttribute("errors", "example errors");
return new ModelAndView("loginController");

Und in Ihrer Login-Controller-Check für dieses Attribut, und fügen Sie das Modell.

Update: Ohne views.properties mit:

request.setAttribute("errors", "example errors");
return new ModelAndView(new InternalResourceView("/login.htm"));

oder können Sie (andere) Innenansicht Resolver auf Ihre App-servlet.xml (Hinweis von API hinzu: Wenn ViewResolvers Verkettungs, ein InternalResourceViewResolver muss immer zuletzt sein, da es jede Ansicht Namen aufzulösen versucht, ganz gleich, ob die zugrunde liegende Ressource tatsächlich existiert).

<bean id="viewResolver2"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
</bean>

Und dann nur Gebrauch:

request.setAttribute("errors", "example errors");
return new ModelAndView("/login.htm");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top