我正在使用 CDI 对话范围,当用户遵循正常情况时就可以了。但是,当用户未完成“对话”时,我收到此错误:
WELD-000214 Attempt to call begin() on a long-running conversation
显然,是因为有 2 次调用begin方法而没有调用end方法。
为了澄清这一点,这是我的场景:
- 在第一页中,用户通过参考编号搜索产品。如果找到了,我会调用conversation.begin并导航到产品详细信息页面。
- 在此页面中,当用户按下保存按钮时,此时我调用了conversation.end。
问题是在用户离开的详细信息页面(例如,单击菜单中的链接)时,不会调用end方法。当他们返回搜索页面时,我收到错误,因为再次调用了begin 。
我认为,一种可能的解决方案可能是在用户存在第二页时调用end方法。但我不知道如何实现这一点。
(我正在使用 JSF 2.1 和 CDI 的 Weld 1.1.6 实现)
提前致谢