【问题标题】:Retrieving a model from ModelAndView in jsp在 jsp 中从 ModelAndView 中检索模型
【发布时间】:2009-07-26 17:34:20
【问题描述】:

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

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

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: java spring jsp spring-mvc modelandview


    【解决方案1】:

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

    【讨论】:

    • 抱歉,我对 spring mvc 和一般的 webapps 都很陌生。我已添加上述建议,但收到以下错误请求的资源 (/example/WEB-INF/jsp/loginController.jsp) 不可用。这来自我配置的视图解析器。
    • 我用简单的解决方案更新了答案(第一个假设您使用 veiws.properties 来解析视图)
    猜你喜欢
    • 2018-12-20
    • 1970-01-01
    • 2016-10-09
    • 2022-01-25
    • 2012-07-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    相关资源
    最近更新 更多