【发布时间】:2014-08-15 01:43:04
【问题描述】:
我在点击后退按钮时收到“ViewExpiredException”,仅在 Chrome 浏览器中(IE 和 Firefox - 没问题)。仅当前一个视图有一些 ajax 更新时才会发生这种情况。
- 加载 home.xhtml(比如说 javax.faces.viewState-sequence - 1)
- 在 home.xhtml 上做一些 Ajax 更新(比如 javax.faces.viewState-sequence - 2)
- PRG 并再次转到 home.xhtml(比如说 javax.faces.viewState-sequence - 3)
- 按 Chrome 后退按钮。
- 页面加载。 (现在视图具有 javax.faces.viewState-sequence - 2 - ISSUE 不是具有新序列 id - 4 它正在获取上一个序列 id - 2。这意味着页面可能正在从缓存加载。因为我确实删除了前一个来自服务器的视图,序列 id - 2 的视图不存在)。
- 任何单击(回发/ajax)都会显示 ViewExpiredException。
注意:如果跳过上面的第 2 步,则没有问题,如下所示
- 加载 home.xhtml(比如说 javax.faces.viewState-sequence - 1)
- PRG 并再次转到 home.xhtml(比如说 javax.faces.viewState-sequence - 3)
- 按 Chrome 后退按钮
- 页面加载。 (它有 javax.faces.viewState-sequence - 4 - NO ISSUE。这意味着页面没有从缓存加载)
- 任何点击(回发/ajax) - 没问题。
请注意,我使用的是 MyFaces 2.1.8,并且我也在使用 BalusC 建议的 NoCacheFilter。这就是为什么 IE 和 Firefox 没有问题,但只有 Chrome 才有问题,而且只有在之前的视图有 ajax 更新时才会出现问题。
非常感谢任何解决问题的帮助或指示或您的第一个想法。
如果有任何我可能遗漏的信息并且您可能想知道,请告诉我。
更新:2014 年 6 月 27 日
在上述情况下,请告知我是否可以使用 custom ViewHandler 在恢复的视图在回发期间返回 null 时手动创建和构建视图。 我已经检查了问题的答案,Can you POST to JSF2 page with an expired session?。但它在我的设置中不起作用,它显示空白页。任何想法。是因为我使用的是 MyFaces 2.1.8 并且它有不同的状态管理器实现吗?
提前非常感谢。 最好的祝福, 库马尔。
【问题讨论】:
标签: google-chrome jsf jsf-2