Sto scrivendo un componente (composito) che deve interagire con il mio DAO. Ecco come la parte Java è dichiarato:Iniettare le risorse in UIComponent (ovvero il CDI funziona qui?)
@FacesComponent(value="selectLocation")
public class SelectLocation extends UINamingContainer {
per ottenere l'oggetto DAO, ho provato l'annotazione CDI:
@Inject private LocationControl lc;
E che non ha funzionato così ho provato il Volti della nota:
In entrambi i casi non accade nulla - la proprietà lc finisce come nulla dopo che il costruttore ha terminato.
Uso CDI in tutti i miei backing bean e tutto funziona. Questo userebbe Weld all'interno di GlassFish 3.1.1. Qualche suggerimento su come ottenere la risorsa?
Dang Pensavo che fossi su qualcosa c'è - ho provato java.inject.Named ma ancora nessuna gioia. – AlanObject
L'aggiunta di un @RequestScoped causa l'impossibilità di distribuire l'applicazione: WELD-001437 La classe di bean con ambito normale javax.faces.component.UIComponent non è proxyable perché il tipo è finale o contiene un metodo finale public javax.faces.component. TransientStateHelper javax.faces.component.UIComponent.getTransientStateHelper(). – AlanObject
Il componente creato consente all'utente di selezionare un oggetto posizione sfogliando un database (JPA) di tali oggetti. Per questo ho bisogno di accedere al DAO direttamente o indirettamente. Ma i miei DAO non sono diversi dagli altri miei bean gestiti da CDI: hanno solo annotazioni JPA al loro interno come @PersistenceContext. Sto leggendo le specifiche CDI ora per vedere se c'è qualcosa in bean.xml che può aiutare. – AlanObject