CDI / Weld - 结束对话后如何处理浏览器页面刷新?

时间:2011-06-21 01:36:05

标签: jsf cdi seam-conversation

在使用CDI的早期阶段,我正在导航到长时间运行的页面 使用faces-redirect = true激活对话,所以我有一个像..myPage.xhtml这样的网址?cid = 1.

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

有谁能建议如何解决这个问题?我正在使用Steven Verborgh ViewScoped实现,只需使用会话范围的bean来传递参数 页面之间。所以我有2个@ViewScoped bean,每个bean都返回第1页& 2。 我将@ConversationScoped ParameterBean注入两个视图范围的bean中。我开始了 在调用from的action方法中的conversation(parameterBean.getConversation()。begin()) 在第2页的preRenderView事件中,我引用了属性 将parameterBean转换为第2页支持bean实例变量并结束对话, 它完成了它的工作而不再需要。

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

感谢。

1 个答案:

答案 0 :(得分:4)

没有解决方法。默认的@ConversationScoped完全被破坏了。我正在使用来自MyFaces CODI的@ConversationScoped。它解决了标准范围可以解决的所有问题。