2011-03-02 9 views
13

मैं पूरे जेएसएफ प्रबंधित बीन को @ManagedProperty एनोटेशन (Possible to inject @ManagedBean as a @ManagedProperty into @WebServlet? के समान) के माध्यम से एक और प्रबंधित बीन में इंजेक्ट करने की कोशिश कर रहा हूं, लेकिन मैं एक बीन में इंजेक्शन कर रहा हूं, सर्वलेट नहीं)। यह मैं क्या कर रहा है:@ प्रबंधित ग्रेप्रर्टी एनोटेशन के माध्यम से पूरे प्रबंधित बीन को इंजेक्ट कैसे करें?

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

@ManagedBean 
public class Bar { 
} 

काम नहीं करता (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. 

यह संभव सब पर है या मैं के माध्यम से प्रोग्राम के रूप में इस इंजेक्शन क्या करने की जरूरत FacesContext?

उत्तर

29

आप FacesContext को हल करने और इंजेक्षन जाएगा निर्भरता setters और 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;; 
    } 
} 

जोड़ने की जरूरत है यह setters इंजेक्शन उपयोग करती हैं इसलिए उचित setters/टिककर खेल होना चाहिए there.otherwise यह संपत्ति नहीं मिलेगा

+1

एक्सएचटीएमएल जेएसएफ के लिए बस एक नोट, प्रबंधित करने के लिए ff और setFoo के लिए _foo का अनुवाद करता है, आपको वास्तव में get_foo और set_foo की आवश्यकता होती है! – Rob

+1

अन्य नोट> केवल इंजेक्शन के लिए केवल एक सेटर आवश्यक है। रेफरी> http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/ – Sergio

संबंधित मुद्दे