2009-07-26 37 views
0

我目前正试图从我的控制器中的onSubmit()返回一个模型。然后我试图在我的jsp中检索这个。在jsp中从ModelAndView中检索模型

例如

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

,然后用

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

取回然而,这并不显示任何内容。它会转到正确的重定向视图,并且不会发出任何错误,但文本不会显示。

任何帮助将不胜感激。

感谢

回答

2

什么RedirectView的作用是发送一个重定向头至浏览器,浏览器页面的完整的重新加载,因此模型不得意忘形那边(因为它与现在处理通过登录控制器它自己的模型)。

你可以做的是传失误通过请求属性:

在你views.properties:

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

然后,而不是RedirectView的回报:

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

而在你的登录控制器检查该属性并将其添加到模型中。

更新:不使用views.properties:

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

也可以添加(另一个)内部视图解析器到你的App-servlet.xml中(注意从API:当链接ViewResolvers,如果InternalResourceViewResolver总是必须是最后的,因为它会尝试解决任何视图名称,不管底层的资源是否实际存在)。

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

,然后只用:

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

道歉,我对spring mvc以及一般的webapps都很陌生。我已添加上述建议,但出现以下错误请求的资源(/example/WEB-INF/jsp/loginController.jsp)不可用。这来自我配置的视图解析器。 – smauel 2009-07-26 19:19:18