【问题标题】:JSF Sessions with two windows带有两个窗口的 JSF 会话
【发布时间】:2013-05-27 06:29:00
【问题描述】:

第一个问题:

我有两个窗口(IE),第一个窗口我在屏幕上进行搜索,然后我用第二个窗口进行另一个搜索。在那之后,我失去了我的两个会话中的一个,这里我的问题是,是否有可能有 2 个窗口进行不同的搜索,并且在他们自己的会话中有自己的结果,还是不可能?

第二个问题:

<managed-bean>
<managed-bean-name>searchBean</managed-bean-name>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
    <property-name>resultBean</property-name>
</managed-property>

<managed-bean>
<managed-bean-name>resultBean</managed-bean-name>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
    <property-name>tabMap</property-name>
    <map-entries>
        <key-class>java.lang.Integer</key-class>
        <map-entry>
            <key>0</key>
            <value>#{firstTabBean}</value>
        </map-entry>
        <map-entry>
            ...
        </map-entry>
    </map-entries>
</managed-property>

<managed-bean>
<managed-bean-name>firstTabBean</managed-bean-name>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
    <property-name>resultBean</property-name>                   
    <value>#{resultBean}</value>
</managed-property>

事实上,在我的 resultBean(显示结果的屏幕的 bean)中,我有很多带有其他 bean 的选项卡。但是,如果我的“resultBean”是请求范围的,我必须更改所有“tabBean”的范围,因为我不能在 中有一个带有请求范围 bean 的会话范围 bean,范围是更短,我有一个例外。

【问题讨论】:

  • 您使用的是哪个版本的 JSF?
  • JSF 1.2(不是 2.0)
  • 在 JSF 2.0 中,我当然会推荐 ViewScoped,但是通过一些搜索,看起来这可以帮助你:stackoverflow.com/a/10760757/354831
  • 当你在两个不同的窗口登录你的站点时,你会破坏第一个登录会话的会话吗?

标签: jsf session


【解决方案1】:

两个窗口并不一定意味着两个不同的会话,因此搜索被覆盖是正常的(只有一个真正的会话)。

您正在搜索的是视图范围而不是会话范围。在视图范围中,搜索将一直存在,直到您发布到另一个视图。当您打开一个新窗口(或选项卡)时,它会创建一个新的视图范围,因此您可以保留任意数量的搜索。

在 JSF 2.0 中,我建议将 bean 放入 ViewScoped,但在 JSF 1.2 中 this answer 可以帮助您做几乎相同的事情。

关于您的旧帖子,您似乎正在使用 RichFaces,因此您可能会对a4j:keepAlive 感兴趣,请在this article 中阅读更多内容。

【讨论】:

  • 这仅适用于请求范围(request)或者我可以使用会话范围吗?
  • 它只适用于 RequestScoped,它会在 ViewScope 中转换
  • 嗯...所有托管 bean 都在应用程序的会话范围内...这有点烦人 :(
  • 您只需对用于搜索的 bean 执行此操作,即:实际包含结果和/或搜索选项的 bean。
  • 关于这一点,如果我需要一个 bean(在会话范围内)作为我的请求范围 bean 中的属性。我觉得有问题。 => "Property navigationBean 在一个生命周期比目标范围视图短的范围内引用对象"
猜你喜欢
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多