【问题标题】:JSF 2.1 : ViewExpiredException : When clicking browser back button : Chrome onlyJSF 2.1:ViewExpiredException:单击浏览器后退按钮时:仅限 Chrome
【发布时间】:2014-08-15 01:43:04
【问题描述】:

我在点击后退按钮时收到“ViewExpiredException”,仅在 Chrome 浏览器中(IE 和 Firefox - 没问题)。仅当前一个视图有一些 ajax 更新时才会发生这种情况。

  1. 加载 home.xhtml(比如说 javax.faces.viewState-sequence - 1)
  2. 在 home.xhtml 上做一些 Ajax 更新(比如 javax.faces.viewState-sequence - 2)
  3. PRG 并再次转到 home.xhtml(比如说 javax.faces.viewState-sequence - 3)
  4. 按 Chrome 后退按钮。
  5. 页面加载。 (现在视图具有 javax.faces.viewState-sequence - 2 - ISSUE 不是具有新序列 id - 4 它正在获取上一个序列 id - 2。这意味着页面可能正在从缓存加载。因为我确实删除了前一个来自服务器的视图,序列 id - 2 的视图不存在)。
  6. 任何单击(回发/ajax)都会显示 ViewExpiredException。

注意:如果跳过上面的第 2 步,则没有问题,如下所示

  1. 加载 home.xhtml(比如说 javax.faces.viewState-sequence - 1)
  2. PRG 并再次转到 home.xhtml(比如说 javax.faces.viewState-sequence - 3)
  3. 按 Chrome 后退按钮
  4. 页面加载。 (它有 javax.faces.viewState-sequence - 4 - NO ISSUE。这意味着页面没有从缓存加载)
  5. 任何点击(回发/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


    【解决方案1】:

    刚刚解决了这个问题。在一个页面中有多个表单,每个表单都会有一个隐藏的输入 javax.faces.viewState。当为后退导航加载页面时,如果前一页面有一些 ajax 调用,Chrome 将从缓存中加载这些状态输入。我的解决方法是在所有表单上自动完成,隐藏的输入现在从缓存中重新加载。我希望这可以帮助有需要的人。

    <script> 
        $(function(){
            $('form').attr("autocomplete", "off");
        });
    </script>
    

    【讨论】:

      【解决方案2】:

      我之前也遇到过类似的问题。

      我通过以下方式解决了它:

      1. 运行 Chrome 并按 F12 执行开发者工具
      2. 选择菜单栏上的资源,然后点击 Cookies
      3. 选择您的网站名称并清除所有 cookie。

      它对我有用。

      【讨论】:

        猜你喜欢
        • 2011-08-30
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 1970-01-01
        • 1970-01-01
        • 2013-08-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多