1

我正在做一个具有多种形式的 Spring Web 应用程序。成功保存表单时的常见做法是在会话中保存成功消息,然后将用户重定向到显示成功消息的相同或新链接。

在 Spring web 中,这可以像下面这样完成:

request.getSession().setAttribute("successMessage", "Form saved successfully");
return "redirect:new_link";

我希望使我的应用程序无状态,但仍然遵循重定向和显示表单保存成功消息的做法。我希望有一个优雅的解决方案。一个简单(但由于一些原因我觉得不太优雅)的解决方案是将消息作为字符串附加在返回的 url 中,类似于以下内容,并让前端页面检测并显示该消息。

return "redirect:new_link?successMessage=Form-saved-successfully";

我认为任何想法或解决方案都适用于任何 Web 应用程序,无论使用何种平台或编程语言。

任何输入都非常感谢。

谢谢并恭祝安康!

4

2 回答 2

2

使用Post-Redirect-Get模式

使用Flash 属性在后续页面上显示成功/失败消息。

于 2013-09-01T17:34:54.213 回答
2

假设您使用 Spring 3.1 或更高版本,那么您可以为此目的使用 flash 属性。定义RedirectAttributes类型的方法属性。javadoc 有一个关于如何使用它们的示例。

尽管这不会使您的应用程序无状态,但它消除了对会话的直接耦合。(理论上,您可以实现自己的FlashMapManager,因为默认情况下仍将其存储在会话中)。

如果您想要无状态解决方案,则需要将消息(或消息代码)放入重定向 URL 或重定向到始终显示相同消息的特定“您的表单已保存”页面。

于 2013-09-01T17:35:09.483 回答