【问题标题】:Issue in using JSF view with multiple browser tabs将 JSF 视图与多个浏览器选项卡一起使用时出现问题
【发布时间】:2015-06-26 18:53:33
【问题描述】:

我们可以通过在 web.xml 中指定更大数量的 numberOfViewsInSession 和 numberOfLogicalViews 来增加 JSF 中的视图会话数。但是,在多个浏览器标签的情况下,我们遇到了一个难题。当用户打开多个选项卡并通过选择带有 Get 请求的链接或使用对话框框架打开对话框来主动使用其中一个选项卡时,当他/她选择将触发 ajax Post 请求的下拉列表时,其他非活动选项卡的视图将过期。

我可以知道在多个浏览器选项卡情况下处理 JSF 视图的最佳实践吗?

【问题讨论】:

  • 你错过了告诉你正在使用哪个 JSF 实现和版本。此外,如果有一个小测试用例能够重现您的问题,那就太好了。 “多个”标签有多少?
  • 2.2.5

标签: jsf session view


【解决方案1】:

对于 Mojarra,您可以通过 com.sun.faces.numberOfLogicalViewscom.sun.faces.numberOfViewsInSession 以及对于 MyFaces 通过 org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSIONorg.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION 增加会话中的观看次数。

更详细的解释可以找到here

【讨论】:

  • 我们已经包含 numberOfViewsInSession 来增加物理视图和 numberOfLogicalViews 来增加逻辑视图。但是,根据我之前的场景,无论我们在 numberOfLogicalViews 中输入的数字有多大,如果用户在其中一个浏览器选项卡中主动涉及 GET 请求,仍然可能会遇到 ViewExpiredException。
  • 您在问题中没有提到numberOfLogicalViews。只有当您的浏览器选项卡数量超过逻辑视图数量时,您描述的场景才会发生。
  • 我很抱歉 numberOfLogicalViews 参数。我刚刚把它加回来了。谢谢你的提醒。关于选项卡的数量,根据我们的测试,如果用户涉及任何 GET 请求或 openDialog 函数,则会创建一个新视图。
猜你喜欢
  • 2011-03-13
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多