Estoy escribiendo un componente (compuesto) que necesita interactuar con mi DAO. Aquí es cómo la parte de Java se declara:Inyectando recursos en UIComponent (¿alias funciona el CDI aquí?)
@FacesComponent(value="selectLocation")
public class SelectLocation extends UINamingContainer {
para obtener el objeto DAO, probé la anotación CDI:
@Inject private LocationControl lc;
Y que no funcionó así que probé las caras anotación:
@ManagedProperty (value = "@{locationControl}") private LocationControl lc;
Ambos casos no ocurre nada - la propiedad lc termina como nula después de que el constructor finaliza.
Uso CDI en todos mis respaldos y todo funciona. Esto usaría Weld dentro de GlassFish 3.1.1. ¿Alguna sugerencia sobre cómo obtener el recurso?
Dang pensé que estabas en lo cierto allí - me trató java.inject.Named pero todavía no hay alegría. – AlanObject
Agregar un @RequestScoped hace que la aplicación no se pueda implementar: WELD-001437 Clase de bean de ámbito normal javax.faces.component.UIComponent no es proxyable porque el tipo es final o contiene un método final public javax.faces.component final. TransientStateHelper javax.faces.component.UIComponent.getTransientStateHelper(). – AlanObject
El componente creado le permite al usuario seleccionar un objeto de Ubicación navegando a través de una base de datos (JPA) de dichos objetos. Para eso necesito acceder al DAO ya sea directa o indirectamente. Pero mis DAO no son diferentes de mis otros beans administrados por CDI, solo tienen anotaciones JPA dentro de ellos como @PersistenceContext en ellos. Estoy leyendo la especificación CDI ahora para ver si hay algo en beans.xml que pueda ayudar. – AlanObject