ViewAccessScoped で CDI アノテーションを使用できるため、MyFaces CODI を使用しています。問題は、アプリケーションによって開かれた複数のブラウザー タブが@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 Web ページは@ViewAccessScopedバッキング Bean を参照します。ただし、それらはすべて同じ windowid を取得します。これは、リンクが含まれるメイン ウィンドウと同じです。それが、すべてがバッキング Bean の同じインスタンスを取得する理由だと思います。
誰でもこれを修正する方法を知っていますか?