【问题标题】:JSF - Session ManagementJSF - 会话管理
【发布时间】:2011-08-01 08:09:28
【问题描述】:

当我打开两个浏览器并并行输入详细信息时,值变得混杂了。一个浏览器中的值填充到另一个浏览器中......我们正在使用 JSF 框架,并且托管 bean 在会话范围内(在我们的例子中,它们不可能在请求范围内)......简而言之,这些值是跨浏览器共享...如何避免这种情况?有什么线索吗?

【问题讨论】:

  • 和托管 bean 是...?
  • this question(重复?)
  • 两个浏览器是什么意思?同一个浏览器的两个窗口?
  • 如果您的意思是同一个浏览器的两个选项卡/窗口,那么这是正确的行为。单个浏览器实例意味着单个会话。 (除非您在隐身/隐私浏览模式下打开窗口,因为这不会引用存储的会话 cookie)

标签: jsf-2


【解决方案1】:

如果您“打开两个浏览器”意味着您打开同一个浏览器的两个窗口,那么一切都是正确的 - 每个浏览器只能获得一个会话(对于 Firefox,有一个插件可以避免这种限制)。

但是,如果您使用两个不同的浏览器,而不是在这种情况下,您会将所有数据保存在应用程序范围内,或者您的容器有问题。

【讨论】:

    【解决方案2】:

    您需要将 bean 放在请求或视图范围内。将基于请求/视图的数据存储在会话范围的 bean 中是个坏主意,您自己也遇到过。

    我认为视图范围会有很大帮助,因为您提到请求范围是“不可能的”(实际上,它只需要预加载正确的数据,以便 JSF 可以相应地采取正确的操作) .

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 2018-11-16
      • 2013-07-22
      • 1970-01-01
      • 2012-12-11
      • 2011-04-03
      • 1970-01-01
      • 2013-04-25
      • 2012-10-11
      相关资源
      最近更新 更多