2011-03-02 35 views
13

Tôi đang cố gắng tiêm toàn bộ hạt được quản lý JSF vào một bean được quản lý khác bằng phương thức @ManagedProperty chú thích (rất giống với Possible to inject @ManagedBean as a @ManagedProperty into @WebServlet?, nhưng tôi đang tiêm vào một bean, không phải là servlet). Đây là những gì tôi đang làm:Làm thế nào để tiêm toàn bộ bean được quản lý thông qua chú thích @ManagedProperty?

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

@ManagedBean 
public class Bar { 
} 

Không làm việc (JSF 2.0/cá móm 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. 

Có thể ở tất cả hoặc tôi cần phải làm tiêm này lập trình qua FacesContext?

Trả lời

29

Bạn cần phải thêm setters và thu khí

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

Khi FacesContext sẽ giải quyết và tiêm phụ thuộc nó sẽ sử dụng setters tiêm nên setters thích hợp/getters nên there.otherwise nó sẽ không tìm thấy tài sản

+1

Chỉ cần lưu ý, cho xhtml JSF dịch _foo sang getFoo và setFoo, đối với quản lý di bạn thực sự cần get_foo và set_foo! – Rob

+1

Lưu ý khác> Chỉ cho phép tiêm chỉ cần thiết lập. Tham khảo> http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/ – Sergio

Các vấn đề liên quan