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

Foi útil?

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");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top