Tôi đang viết một thành phần (composite) cần tương tác với DAO của tôi. Sau đây là cách phần Java được khai báo:Tiêm Tài nguyên vào UIComponent (hay còn gọi là CDI hoạt động ở đây?)
@FacesComponent(value="selectLocation")
public class SelectLocation extends UINamingContainer {
Để có được đối tượng DAO, tôi đã cố gắng chú thích CDI:
@Inject private LocationControl lc;
Và điều đó không làm việc vì vậy tôi cố gắng Faces chú thích:
@ManagedProperty (value = "@{locationControl}") private LocationControl lc;
Cả hai trường hợp không có gì xảy ra - thuộc tính lc kết thúc bằng null sau khi hàm tạo kết thúc.
Tôi sử dụng CDI trong tất cả các hạt sao lưu của mình và tất cả đều hoạt động. Điều này sẽ được sử dụng Weld bên trong GlassFish 3.1.1. Bất kỳ đề xuất về cách lấy tài nguyên?
Đặng Tôi nghĩ bạn đã lên một cái gì đó - tôi đã cố gắng java.inject.Named nhưng vẫn không có niềm vui. – AlanObject
Việc thêm @RequestScoped khiến ứng dụng không thể triển khai: WELD-001437 Lớp bean bình thường phạm vi javax.faces.component.UIComponent không được ủy quyền vì loại này là cuối cùng hoặc chứa phương thức cuối cùng là javax.faces.component cuối cùng công khai. TransientStateHelper javax.faces.component.UIComponent.getTransientStateHelper(). – AlanObject
Thành phần được tạo cho phép người dùng chọn đối tượng Vị trí bằng cách duyệt qua cơ sở dữ liệu (JPA) của các đối tượng đó. Đối với điều đó tôi cần truy cập vào DAO trực tiếp hoặc gián tiếp. Nhưng các DAO của tôi không khác gì các bean được CDI quản lý khác của chúng tôi - chúng chỉ có các chú thích JPA bên trong chúng như là @PersistenceContext trong chúng. Tôi đang đọc đặc tả CDI ngay bây giờ để xem liệu có cái gì đó trong beans.xml có thể giúp đỡ không. – AlanObject