2011-08-22 17 views
0

我無法在此問題上找到任何指導。我正在編寫一個複合組件,它需要自己的支持bean,因爲它與數據庫交互。有關複合組件支撐豆的基本問題

作爲某些用戶操作的結果,新組件還需要能夠在某些其他支持bean中設置值。

要做到這一點,問題是我必須編寫@FacesComponent java類或常規@ Model/@ Named(我使用CDI註釋)類型的bean嗎?如果你可以使用,那麼其中一個的優點是什麼?

第二個問題:我能否使用CDI @Inject進入@FacesComponent來獲取我的DAO等等?

更新:我發現我可以訪問cc.attr對象用下面的代碼在常規支持bean:

FacesContext fc = FacesContext.getCurrentInstance(); 
    Object obj = fc.getApplication().evaluateExpressionGet(fc, 
      "#{cc.attrs.model.location}", Location.class); 

所以這讓我獲得屬性。我還沒有找到我如何寫他們呢。

所以看起來,做一個@FacesComponent的唯一真正原因是如果你想編寫渲染代碼來輸出普通Facelets標記不會渲染的東西。它是否正確?

回答

1

我覺得BalusC回答了這個基本問題this thread

主要優勢在於@FacesComponent訪問UIComponent通常訪問的屬性的能力,而不是試圖與在Bean中執行的EL表達式綁定。