Recuperando um modelo de ModelAndView em jsp
-
19-09-2019 - |
Pergunta
Atualmente, estou tentando retornar um modelo de onSubmit () no meu controlador. Então eu estou tentando recuperar isso no meu jsp.
Por exemplo
Map model = new HashMap();
model.put("errors", "example error");
return new ModelAndView(new RedirectView("login.htm"), "model", model);
e depois recuperá-lo com
<c:out value="${model.errors}"/>
No entanto, este não exibe nada. ele vai para o redirectview correta e não emite quaisquer erros, mas o texto não é exibido.
Qualquer ajuda será muito apreciada.
graças
Solução
O que RedirectView faz é enviar um cabeçalho de redirecionamento para o navegador para navegador faz uma recarga completa da página, como um modelo de resultado não se deixar para lá (como ele é tratado agora pelo controlador de login com o seu próprio modelo).
O que você pode fazer é passar os erros através de atributos de solicitação:
Em seus views.properties:
loginController.(class)=org.springframework.web.servlet.view.InternalResourceView
loginController.url=/login.htm
Então, em vez de RedirectView retorno:
request.setAttribute("errors", "example errors");
return new ModelAndView("loginController");
E em seu cheque controlador de login para este atributo e adicioná-lo ao modelo.
Update: Sem usar views.properties:
request.setAttribute("errors", "example errors");
return new ModelAndView(new InternalResourceView("/login.htm"));
ou você pode adicionar (outro) resolvedor vista interna para o App-servlet.xml (Nota do API: Quando encadeamento ViewResolvers, um InternalResourceViewResolver sempre precisa ser a última, uma vez que irá tentar resolver qualquer nome de vista, não importa se o recurso subjacente realmente existe):.
<bean id="viewResolver2"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
</bean>
E depois é só usar:
request.setAttribute("errors", "example errors");
return new ModelAndView("/login.htm");