Domanda

Al momento sto cercando di restituire un modello da onSubmit () nel mio controller. Ho poi sto cercando di recuperare questo nel mio jsp.

per esempio

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

e poi il recupero con

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

Tuttavia, questo non viene visualizzato nulla. va al redirectview corretta e non emette gli eventuali errori, ma il testo non viene visualizzato.

Ogni aiuto sarà molto apprezzato.

grazie

È stato utile?

Soluzione

Cosa RedirectView fa è l'invio di un colpo di testa redirect al browser in modo del browser fa una ricarica completa della pagina, come un modello di risultato non venga eseguita lì (come è gestita ora dal regolatore di accesso con il proprio modello).

Che cosa si può fare è passare attraverso errori attributi richiesta:

Nelle tue views.properties:

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

Poi, invece di ritorno RedirectView:

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

E nel tuo assegno di controllo di accesso per questo attributo e aggiungerlo al modello.

Aggiornamento: Senza usare views.properties:

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

O è possibile aggiungere (un altro) Vista resolver interna alla App-servlet.xml (Nota da API: Quando concatenamento ViewResolvers, un InternalResourceViewResolver ha sempre bisogno di essere l'ultimo, come tenterà di risolvere qualsiasi nome di vista, non importa se la risorsa sottostante esiste realmente):.

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

E poi basta usare:

request.setAttribute("errors", "example errors");
return new ModelAndView("/login.htm");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top