我使用的是MyFaces CODI,因为它允许我在ViewAccessScoped中使用CDI注释--对此非常有用。问题是,我发现我的应用程序打开的多个浏览器选项卡共享@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。但是,它们都得到相同的窗口it,这与主窗口中的链接相同。我认为这就是为什么它们都得到相同的后台bean实例的原因。
有人知道怎么解决这个问题吗?
发布于 2011-10-24 19:04:43
这是一个已知的浏览器问题。解决方案:http://old.nabble.com/-CODI--lazy-windowId-drop-script-p31654496.html
https://stackoverflow.com/questions/7870989
复制相似问题