从 jsp 中的 ModelAndView 检索模型

发布于 2024-07-29 20:28:21 字数 402 浏览 9 评论 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}"/>

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

任何帮助都感激不尽。

谢谢

I am currently trying to return a model from onSubmit() in my controller. I then am trying to retrieve this in my jsp.

for example

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

and then retrieving it with

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

However this does not display anything. it goes to the correct redirectview and does not issue any errors, but the text is not displayed.

Any help will be much appreciated.

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白馒头 2024-08-05 20:28:22

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

What RedirectView does is sending a redirect header to the browser so browser does a complete reload of the page, as a result model does not get carried over there (as it is handled now by login controller with its own model).

What you can do is pass errors through request attributes:

In your views.properties:

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

Then instead of RedirectView return:

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

And in your login controller check for this attribute and add it to the model.

Update: Without using views.properties:

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

OR you can add (another) internal view resolver to your App-servlet.xml (Note from API: When chaining ViewResolvers, an InternalResourceViewResolver always needs to be last, as it will attempt to resolve any view name, no matter whether the underlying resource actually exists.):

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

And then just use:

request.setAttribute("errors", "example errors");
return new ModelAndView("/login.htm");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文