【发布时间】:2017-07-20 16:28:28
【问题描述】:
假设我在当前页面 A 后面有一个 @ViewScoped Bean。现在用户通过正常的 get 请求导航到页面 B,比如说 www.google.com。 当用户单击浏览器的后退按钮时,我想恢复上一页的@ViewScope,使其与离开时完全一样。这有可能以某种方式实现吗?
我不想将我的页面设为 A @SessionScoped,以便支持 bean 在两个浏览器选项卡中打开时不会干扰彼此的状态。
【问题讨论】:
-
在 Ajaxical 请求的情况下,没有恢复的问题 - JSF 或其他。在其他情况下,如果页面导航是通过 HTTP POST 请求完成的,那么所使用的页面导航的整个概念是不稳定的,需要重新考虑使用 HTTP GET 请求提供必要的请求参数(在任何 Web 项目中始终使用相应的可收藏 URL 的页面导航使用 HTTP GET 请求进行)。
-
在@PreDestroy() 中保留值,并在@PostContruct() 方法中取回它们。或查看链接stackoverflow.com/questions/1282251/… 以了解如何将它们存储在会话中。