我有一个Tomcat6JSF web应用程序,我想用CDI来设置它。不过,我将不得不逐步将该项目转换为CDI。
我的问题是: CDI bean和传统的JSF托管bean可以相互注入吗?
谢谢。
发布于 2011-10-17 03:51:42
所有JSF managed beans (JMB)要么是自动的CDI managed beans (CMB),要么可以使用beans.xml标记文件进行识别。(中巴的要求很低,基本上只是规定existence of a non-parameter constructor。)。
这意味着您应该能够使用(读取:注入)所有JMB,几乎不需要任何额外的工作。
然而,由于JMB使用与CMB不同的作用域(javax.faces.*与javax.enterprise.*),因此会出现问题
最好的解决方法是注册一个相对简单的CDI扩展:当CDI服务器(Tomcat )启动时,它将引发一些您可以观察到的事件-这是您可以检测JMB并将其转换为正确作用域的CMB的地方。
但在你开始破解之前:所有这些都已经由Seam 3 Faces module完成了。只需将其放在类路径中,所有JSF作用域都会桥接到CDI作用域。
https://stackoverflow.com/questions/7734214
复制相似问题