Могут ли управляемые компоненты CDI и управляемые компоненты JSF общаться друг с другом? - PullRequest
5 голосов
/ 12 октября 2011

У меня есть веб-приложение Tomcat 6 JSF, которое я хотел бы настроить с использованием компонентов CDI. Хотя мне придется постепенно преобразовывать проект в CDI.

Мой вопрос: могут ли бины CDI и традиционные бины, управляемые JSF, вводиться друг в друга?

Спасибо.

1 Ответ

4 голосов
/ 16 октября 2011

Все управляемые bean-компоненты JSF (JMB) либо являются автоматически управляемыми bean-компонентами (CMB) CDI, либо могут быть распознаны как таковые с помощью файла маркера beans.xml .(Требования CMB установлены очень низкими и в основном просто диктуют существование непараметрического конструктора .)

Это означает, что вы должны иметь возможность использовать (читай: вводить)все JMB без каких-либо дополнительных усилий.

Однако проблемы возникнут, потому что JMB используют другие области, чем CMB (javax.faces.* против javax.enterprise.*)

Это лучше всего решить путем регистрации относительногопростое расширение CDI: когда сервер CDI (Tomcat for you) запускается, он вызывает пару событий, которые вы можете наблюдать - это место, где вы можете обнаружить JMB и преобразовать их в правильно определенные области CMB.

Но прежде чем приступить к взлому: все это уже сделано модулем Seam 3 Faces .Просто поместите его в свой путь к классу, и все JSF-области соединяются с CDI-областями.

...