2013-09-24 20 views
6

Używam Java EE 6 na JBoss EAP 6, a moi JSF fasoli są opatrzone tak: @ManagedBean @ViewScoped (zarówno z pakietu javax.faces.bean)Viewscoped JSF i CDI fasola

jednak są one również ziarnami CDI (domyślny konstruktor, użycie @Inject @ Preadroy itd.). Cały czas czytam, że nie można mieszać tych adnotacji (JSF i CDI), ale najwyraźniej działa dobrze: zastrzyki działają, preDestroy jest wywoływany w widoku zmiany itp.). Czy czegoś brakuje? Jaki jest problem? Dlaczego nie skorzystać?

Odpowiedz

9

CDI @Inject działa "wszędzie", a więc także wewnątrz JSF @ManagedBean. Odpowiednik JSF @ManagedProperty działa tylko wewnątrz @ManagedBean. Nie można również uzyskać realnie zarządzanego komponentu bean JSF w żadnym zarządzanym komponencie CDI (zamiast tego byłaby to instancja zarządzana przez CDI). Być może właśnie o tym czytałeś. Ogólna zgoda jest jednak taka, że ​​najlepiej nie mieszać ich, aby uniknąć nieporozumień wśród rozruszników. JSF utility library OmniFaces ma zgodny z CDI @ViewScoped dla JSF 2.0/2.1.

@PreDestroy jest przy okazji nie konkretnego do CDI, nie jest jego odpowiednikiem @PostConstruct. Powinny działać dobrze zarówno w komponentach zarządzanych przez CDI, jak iw komponentach bean zarządzanych przez JSF.

+0

Dziękuję za odpowiedź. Wydaje się, że jestem naprawdę zdezorientowany tymi wszystkimi rzeczami ... Więc co mam, to fasola zarządzana przez JSF, a nie ziarno CDI? Nawet jeśli ten komponent spełnia wszystkie wymagania, to czy chodzi o dokumentację komponentu CDI (domyślny konstruktor, a nie wewnętrzna klasa itp.)? Jeśli tak, to jaka jest różnica do komponentu bean CDI? jakie są wady lub czego nie mogę zrobić z tym komponentem bean, który mogę zrobić z komponentem CDI? – htft

+0

Nie można "@ Inject" instancji komponentu bean zarządzanego JSF w innym miejscu. Jeśli nie potrzebujesz go, to nie ma wady. Należy jednak zauważyć, że JSF powoli przechodzi na CDI. Nadchodzące adnotacje specyficzne dla JSF, takie jak '@ FlowScoped', są tylko CDI. Funkcja JSF '@ ManagedBean' zostanie wycofana w najbliższej przyszłości. Użytkownicy są zachęcani do przejścia na CDI, zanim to nastąpi. – BalusC