我正在寫一個需要與我的DAO交互的(複合)組件。這裏是Java的部分是如何宣稱:注入資源到UIComponent(又名CDI在這裏工作嗎?)
@FacesComponent(value="selectLocation")
public class SelectLocation extends UINamingContainer {
要獲得DAO對象,我嘗試了CDI註解:
@Inject private LocationControl lc;
,但這並沒有工作,所以我嘗試了面孔註釋:
@ManagedProperty (value = "@{locationControl}") private LocationControl lc;
這兩種情況都沒有發生 - 屬性lc在構造函數完成後以null結束。
我在所有支持bean中使用CDI,它都可以工作。這將使用GlassFish 3.1.1中的Weld。有關如何獲取資源的任何建議?
黨我還以爲你在那裏的東西 - 我試圖java.inject.Named,但仍然沒有喜悅。 – AlanObject
添加@RequestScoped將導致應用程序無法部署:WELD-001437正常範圍的bean類javax.faces.component.UIComponent不可委派,因爲該類型是final或它包含最終方法public final javax.faces.component。 TransientStateHelper javax.faces.component.UIComponent.getTransientStateHelper()。 – AlanObject
創建的組件允許用戶通過瀏覽這些對象的數據庫(JPA)來選擇Location對象。爲此,我需要直接或間接訪問DAO。但是,我的DAO與我的其他CDI託管的bean沒有區別 - 它們內部只有JPA註釋,例如@PersistenceContext。我現在正在閱讀CDI規範,以查看bean.xml中是否有某些內容可以提供幫助。 – AlanObject