我在一个网页中有 2 个链接,一品脱链接到 appserver/?dept=1,链接二是 appserver/?dept=2。然后我有一个 JSF 阶段监听器,在那里,我可以获取后端 bean 并将 dept1 或 dept2 设置为 bean 参数,以便呈现不同的部门内容。如果用户从上面的网页启动 2 个窗口,dept1 窗口的内容可以转到 dept2 窗口。都搞砸了。(注意,如果您从桌面快捷方式启动浏览器,输入上面的链接,没问题,因为将创建 2 个会话,创建 2 个不同的后端 bean 实例)。
关键原因是 JSF 将 bean 存储在会话中,因此来自同一个父窗口的 2 个窗口共享相同的会话 id(cookie),然后使用相同的后端 bean 类实例。在渲染结果时,结果可以转到任一窗口。
我怎样才能避免这种窗口交叉内容的情况?这似乎是很久以前就应该解决的基本 Web 应用程序问题。或者我可能会做错事。
我试过接缝转换,没有帮助,JSF2.0有视图范围,CDO。剂量可以帮助吗?由于各种原因,我们还不能迁移到 JSF2.0。我正在使用 JAVA6、Tomcat6.20、Icefaces。任何帮助都是适当的。