2011-03-02 11 views
13

Tüm JSF yönetilen soya fasulyesi, @ManagedProperty ek açıklaması (Possible to inject @ManagedBean as a @ManagedProperty into @WebServlet?'a çok benzer, ancak bir servlet değil, bir fasulye içine enjekte ediyorum) aracılığıyla başka bir yönetilen fasulye içine enjekte etmeye çalışıyorum. Bu benim yaptığım budur:Yönetilen Bean'in tamamı @ManagedProperty ek açıklaması aracılığıyla nasıl enjekte edilir?

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

@ManagedBean 
public class Bar { 
} 

Çalışmaz (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. 

hiç mümkün mü yoksa aracılığıyla programlı bu enjeksiyon yapmak gerekir FacesContext? FacesContext bağımlılıkları gidermek ve enjekte edecektir zaman

cevap

29

Bunu özelliği bulamazsınız there.otherwise o kadar uygun belirleyiciler/alıcıları olmalı ayarlayıcılar enjeksiyon kullanacak ayarlayıcılar ve alıcılar

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

eklemem gerekiyor

+1

Sadece bir not, xhtml JSF için getFoo ve setFoo için _foo çevirir, yönetilen di için get_foo ve set_foo'ya ihtiyacınız var! – Rob

+1

Diğer not> Sadece enjeksiyon için sadece ayarlayıcı gereklidir. Ref> http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/ – Sergio

İlgili konular