0

第一个问题:

我有两个窗口(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”的范围,因为我不能在 <managed-property> 中有一个带有请求范围 bean 的会话范围 bean,范围是更短,我有一个例外。

4

1 回答 1

1

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

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

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

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

于 2013-05-27T06:45:59.070 回答