在使用 CDI 的早期,我使用 faces-redirect=true 导航到一个长时间运行的对话处于活动状态的页面,因此我有一个类似 ..myPage.xhtml?cid=1 的 URL。
在某个时候我结束了谈话,我的意思是这必须是一件合理的事情,或者你也可以使用会话范围?无论如何,我结束对话,然后用户按 F5,然后这当然会导致“未找到对话”错误,因为 cid=1 不存在。
谁能建议如何解决这个问题?我正在使用 Steven Verborgh ViewScoped 实现,并简单地使用对话范围 bean 在页面之间传递参数。因此,例如,我有 2 个 @ViewScoped bean,每个都返回第 1 页和第 2 页。我将 @ConversationScoped ParameterBean @Inject 到两个视图范围的 bean 中。我在从第 1 页调用的操作方法中开始对话 (parameterBean.getConversation().begin())。在第 2 页的 preRenderView 事件中,我将 parameterBean 的属性引用到第 2 页的支持 bean 实例变量中,并且结束对话,它完成了它的工作,不再需要。
除了 F5 问题,它工作正常。如果有人有任何建议,我将不胜感激,希望我不会遗漏一些非常明显的东西。我有点假设没有摆脱重定向。
谢谢。