2011-06-21 56 views
5

在使用CDI的最初几天,我使用faces-redirect = true导航到长时间运行 对话的页面,所以我有一个URL,如..myPage.xhtml?cid = 1。CDI /焊接 - 在结束对话后如何处理浏览器页面刷新?

在某些时候我结束了谈话,我的意思是这必须是一个合理的事情做 或者你可能会使用会话范围?无论如何,我结束了谈话,然后 用户点击F5,然后当然这会导致“对话未找到”错误,因为cid = 1 不存在。

任何人都可以建议如何解决这个问题?我正在使用Steven Verborgh ViewScoped实现并简单地使用对话作用域bean来在页面之间传递参数 。因此,我有例如2个@ViewScoped bean,其中每个都返回页面1 & 2. I @Inject @ConversationScoped ParameterBean到视图作用域bean中。我从 页面1调用的操作方法中开始了 对话(parameterBean.getConversation()。begin())。在第2页的preRenderView事件中,我将参数 的属性引用到页面2支持bean实例变量并结束对话,它完成了它的工作,不再需要。

除了F5问题,它工作正常。如果有人有任何建议,我会很感激, 希望我不会错过真正明显的东西。我认为有没有得到 远离重定向。

谢谢。

回答

4

没有解决方法。默认的@ConversationScoped完全被破坏。我使用的是MyFaces CODI中的@ConversationScoped。它解决了您可以通过标准范围获得的所有问题。