gpt4 book ai didi

jsf - CDI 托管 Bean 和 JSF 托管 Bean 可以相互通信吗?

转载 作者:行者123 更新时间:2023-12-03 04:11:27 30 4
gpt4 key购买 nike

我有一个 Tomcat 6 JSF Web 应用程序,我想使用 CDI bean 来设置它。不过,我必须逐渐将项目转换为 CDI。

我的问题是:CDI bean 和传统的 JSF 托管 bean 可以相互注入(inject)吗?

谢谢。

最佳答案

所有 JSF 托管 Bean (JMB) 要么自动成为 CDI 托管 Bean (CMB),要么可以使用 beans.xml 标记文件来识别。 (CMB 的要求设置得非常低,基本上只规定 existence of a non-parameter constructor 。)

这意味着您应该能够使用(即:注入(inject))所有 JMB,几乎不需要额外的努力。

但是,由于 JMB 使用与 CMB 不同的范围(javax.faces.*javax.enterprise.*),因此会出现问题

这些问题最好通过注册一个相对简单的 CDI 扩展来解决:当 CDI 服务器(Tomcat)启动时,它将引发一些您可以观察到的事件 - 这是您可以检测 JMB 和将它们转换为范围正确的 CMB。

但在你开始黑客攻击之前:所有这一切都已经由Seam 3 Faces module完成了。 。只需将其放入类路径中,所有 JSF 作用域都会桥接到 CDI 作用域。

关于jsf - CDI 托管 Bean 和 JSF 托管 Bean 可以相互通信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734214/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com