2011-03-02 14 views
13

Estoy tratando de inyectar todo el bean gestionado JSF en otro bean administrado por medio de la anotación @ManagedProperty (muy similar a Possible to inject @ManagedBean as a @ManagedProperty into @WebServlet?, pero estoy inyectando en un bean, no en un servlet). Esto es lo que estoy haciendo:Cómo inyectar todo el bean administrado a través de @ManagedProperty anotación?

@ManagedBean 
public class Foo { 
    @ManagedProperty(value = "#{bar}") 
    private Bar bar; 
} 

@ManagedBean 
public class Bar { 
} 

No funciona (JSF 2.0/Mojarra 2.0.3):

SEVERE: JSF will be unable to create managed bean foo when it is 
requested. The following problems where found: 
- Property bar for managed bean foo does not exist. Check that 
    appropriate getter and/or setter methods exist. 

¿Es posible en absoluto o que tenga que hacer esto mediante programación a través de la inyección FacesContext?

Respuesta

29

es necesario agregar setters y getters

@ManagedBean 
public class Foo { 
    @ManagedProperty(value = "#{bar}") 
    private Bar bar; 
    //add setters and getters for bar 
    public Bar getBar(){ 
     return this.bar; 
    } 
    public void setBar(Bar bar){ 
     this.bar = bar;; 
    } 
} 

Cuando el FacesContext resolverá e inyectar dependencias se utilizan emisores de inyección de modo emisores apropiados/captadores deben ser there.otherwise no va a encontrar la propiedad

+1

Solo una nota, para xhtml JSF traduce _foo a getFoo y setFoo, para di gestionado realmente necesitas get_foo y set_foo! – Rob

+1

Otra nota> Para inyección solo, se requiere un colocador. Ref> http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/ – Sergio

Cuestiones relacionadas