0

我目前正在尝试从控制器中的 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}"/>

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

任何帮助都感激不尽。

谢谢

4

1 回答 1

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 的注释:链接 ViewResolver 时,InternalResourceViewResolver 总是需要放在最后,因为它会尝试解析任何视图名称,无论底层资源是否确实存在。):

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

然后只需使用:

request.setAttribute("errors", "example errors");
return new ModelAndView("/login.htm");
于 2009-07-26T18:53:23.180 回答