【问题标题】:CDI and "Nested" ConversationsCDI 和“嵌套”对话
【发布时间】:2014-01-08 09:16:26
【问题描述】:

我一直在阅读 Java EE 6(以及 CDI 1.0)中的对话范围,以及它如何将数据与浏览器中的不同选项卡隔离,并在特定页面工作流的许多请求中保留数据。我没有问题。

在我的阅读中,我了解到它的许多想法都来自 Seam。我经常看到诸如“但 CDI 的对话范围不进行“嵌套”对话”之类的警告。我不确定“嵌套”对话到底是什么?

我也读过这个很好的链接http://www.andygibson.net/blog/article/understanding-nested-conversations/

但我认为我错过了一些基本的东西。我只是没有完全理解在这种情况下“嵌套”对话是什么。任何人都可以帮我把它弄糊涂吗?

【问题讨论】:

    标签: jsf jakarta-ee java-ee-6 cdi conversation-scope


    【解决方案1】:

    来自Seam 2 documentation

    嵌套对话有自己的对话上下文,但可以从外部对话的上下文中读取值。外部对话的上下文在嵌套对话中是只读的,但由于对象是通过引用获得的,因此对对象本身的更改将反映在外部上下文中。

    因此,通过嵌套对话,您有机会将给定的父对话拆分为多个子对话,每个子对话都有其上下文和对父上下文的访问权限。

    虽然 CDI 深受 Seam 的影响,但可以说只是几个影响的共同点,因此它并不包含 Seam 所拥有的一切。其想法是,通过创建 CDI 扩展,例如 Seam 3,以及现在应该由 Apache Deltaspike 完成的工作,可以在 CDI 标准之上提供更多常用功能。

    不幸的是,我对 Deltaspike 提供的功能感到非常失望,尽管 JavaEE 6 和 CDI 已经存在了很长时间,但与我过去的 Seam 2 项目之间仍然存在差距。老实说,看看Deltaspike Homepage,它以“一些徽标创意”开头,这反过来又结束了我对它的信心......

    【讨论】:

    • 好的。感谢您的回答。所以我可以开始一个嵌套对话(最终可能实际上将数据提交到数据库),然后返回父对话,它(至少在内存中不受影响)受嵌套对话的作用?
    • 是的,您可以这么说-正如您提到的文章中所述,您可以将其视为一组变量,其中父项的变量可以访问,但子项和每个变量都不可更改child 有自己的一组变量。
    • CODI/DeltaSpike 对话要好得多,在大多数情况下,使用它们您根本不需要复杂的嵌套......
    猜你喜欢
    • 2015-11-03
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多