第一个问题:
我有两个窗口( IE),第一个窗口在屏幕上搜索,然后用第二个窗口进行另一个搜索。在那之后,我失去了我的两个会话中的一个,这里我的问题是,是否可能有两个窗口进行不同的搜索,并且在自己的会话中有自己的结果,还是不可能呢?
第二个问题:
<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,范围更短,而且我有一个异常。
发布于 2013-05-27 06:45:59
两个窗口并不意味着两个不同的会话,所以搜索被覆盖是正常的(只有一个真正的会话)。
您正在搜索的是视图范围,而不是会话范围。在“视图范围”中,搜索将一直存在,直到您向另一个视图投递。当您打开一个新窗口(或选项卡)时,它正在创建一个新的视图范围,因此您可以保留任意数量的搜索。
在JSF2.0中,我将重新建议将bean放入ViewScoped
中,但是在JSF1.2中,这个答案可以帮助您完成几乎相同的任务。
关于您以前的文章,您似乎正在使用RichFaces,因此您可以通过a4j:keepAlive
进行互操作,在这篇文章中阅读更多内容。
https://stackoverflow.com/questions/16767478
复制相似问题