2011-03-02 17 views
13

Sto provando a iniettare tutto il bean gestito JSF in un altro bean gestito tramite l'annotazione @ManagedProperty (molto simile a Possible to inject @ManagedBean as a @ManagedProperty into @WebServlet?, ma sto inserendo in un bean, non in un servlet). Questo è quello che sto facendo:Come iniettare l'intero bean gestito tramite l'annotazione @ManagedProperty?

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

@ManagedBean 
public class Bar { 
} 

Non funziona (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. 

E 'possibile a tutti o ho bisogno di fare questa iniezione di programmazione tramite FacesContext?

risposta

29

è necessario aggiungere setter e getter

@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;; 
    } 
} 

Quando il FacesContext risolverà e iniettare le dipendenze userà setter di iniezione in modo setter appropriate/getter devono essere there.otherwise non troverà la proprietà

+1

Solo una nota, per xhtml JSF traduce _foo per getFoo e setFoo, per la gestione di hai effettivamente bisogno di get_foo e set_foo! – Rob

+1

Altra nota> Per l'iniezione solo è necessario un setter. Ref> http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/ – Sergio

Problemi correlati