从jsp中的ModelAndView检索模型

时间:2009-07-26 17:34:21

标签: java spring jsp spring-mvc modelandview

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

例如

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

然后使用

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

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

非常感谢任何帮助。

感谢

1 个答案:

答案 0 :(得分:2)

RedirectView的作用是向浏览器发送重定向标题,以便浏览器完全重新加载页面,因为结果模型不会在那里进行(因为它现在由登录控制器使用自己的模型处理)。 / p>

您可以做的是通过请求属性传递错误:

在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");