2014-09-11 34 views
0

我使用Vaadin7.3和CDI Addon將我的Vaadin應用程序與我的EJB後端連接起來。 My EJB Backend有一個DAO,用於讀取數據庫中的所有實體。ComboBox數據源與FormLayout中的CDI

  • MyAppUI - 處理的基本模板,導航...
  • mywindow的 - 只是一個模式窗口,如果我按在MyAppUI一個按鈕,它顯示出來,並顯示MyForm的實例
  • MyForm的 - 聲明表格我的應用程序的實體

MyAppUImywindow的通過CDI附加組件管理,並讓我注入EJB後端的DAO但MyForm的只是的FormLayout的子類,而不是由CDI管理。該表單包含一個組合框,該組合框應顯示可通過DAO訪問的所有數據。我如何注入我的DAO MyForm

回答

2

你有幾種可能性。

  1. 不要自己創建MyForm,而是使用@Inject注入。然後你可以在MyForm注入DAO。爲此,您可能需要更改MyForm的構造函數,或將構造函數轉換爲@PostConstruct註釋的方法並使用空的構造函數。如果有用,您可以使用@UIScoped註釋MyForm

  2. 將DAO傳遞給MyForm的構造函數,或者如果稍後需要某個函數(setter)。

  3. MyForm定義爲MyWindow中的非靜態類,並使用注入到MyWindow的DAO。

  4. 添加DAO壽VaadinSessionMyForm

我想有更多的可能性再次得到它,但這些都是一些幾秒鐘內,我便想起的人。我認爲1.是最乾淨和最可擴展的方式。