我正在使用 MyFaces CODI,因为它允许我将 CDI 注释与 ViewAccessScoped 一起使用——非常适合。问题是我发现我的应用程序打开的多个浏览器选项卡共享同一个@ViewAccessScoped支持 bean 的实例。尴尬的。不受欢迎。
在我的页面中,我有这样的事情:
<h:link outcome="dispRecord"
target="_blank"
value="Click Here To Open New Window For Record 101" >
<f:param name="recID" value="101" />
</h:link>
<h:link outcome="dispRecord"
target="_blank"
value="Click Here To Open New Window For Record 202" >
<f:param name="recID" value="202" />
</h:link>
<h:link outcome="dispRecord"
target="_blank"
value="Click Here To Open New Window For Record 303" >
<f:param name="recID" value="303" />
</h:link>
(这实际上是通过 Primefaces p:dataGrid组件运行的迭代完成的,但我在这里尝试简化。)
单击任何链接将导致浏览器打开一个新窗口(选项卡),并且它打开的 JSF 网页引用@ViewAccessScoped支持 bean。但是,它们都获得相同的 windowid,这与包含链接的主窗口相同。我认为这就是为什么它们都获得相同的支持 bean 实例的原因。
有人知道怎么修这个东西吗?