java - 从 jsp 中的 ModelAndView 检索模型

标签 java spring jsp spring-mvc modelandview

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

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

任何帮助将不胜感激。

谢谢

最佳答案

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

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

在您的views.properties中:

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

然后代替 RedirectView 返回:

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

并在您的登录 Controller 中检查此属性并将其添加到模型中。

更新:不使用views.properties:

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

或者您可以将(另一个)内部 View 解析器添加到您的 App-servlet.xml (API 注释:当链接 ViewResolvers 时,InternalResourceViewResolver 始终需要放在最后,因为它将尝试解析任何 View 名称,无论是否底层资源确实存在。):

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

然后只需使用:

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

关于java - 从 jsp 中的 ModelAndView 检索模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1185083/

相关文章:

java - 来自数据库的 Spring Boot Security REST 基本身份验证

java - JSP 和 Spring Boot

java - Spring WebService 不初始化服务和消费者的 bean

java - 我从 UI 中的日历获取日期,格式为 dd/mm/yyyy。但我想要 18 年 7 月 12 日的格式

mysql - 如何忽略重复键并继续在 mysql 中插入?

java - 当二维数组没有剩余特定元素时退出程序

java - 上传到手机后自动启动Android应用程序?

java :Logic operaction in Catch statment

java - Wildfly (9) + kerberos + ldap( Activity 目录)

java - 无法将 Spring LDAP 与 Spring Security 一起使用