2014-02-23 56 views

回答

2
  • 您當然可以使用@UiField讓UiBinder在createAndBindUi()期間爲您實例化字段。之後您可以修改它們。
  • 在調用createAndBindUi()之前,您當然可以使用@UiField(provided=true),並自己實例化這些字段。 (這樣,您可以使用任何您喜歡的構造函數,並且還允許依賴注入。)顯然,您仍然可以在createAndBindUi()之後修改它們。

那麼@UiFactory有什麼意義?那麼,我有時候會使用它,當我在同一個ui.xml文件中有許多類似的元素時。所以e。 G。我有一個顯示數字0-9的鍵盤的頁面。我更喜歡使用@UiFactory來構造這些小部件,並將它們放入一個java.util.Map中(並執行一些常用的設置),而不是使用@UiFields。

+0

很棒的回答。我是否正確理解代碼編譯後沒有區別? –

+0

我不會說它會導致相同的代碼,但生成的代碼會產生相同的結果;-)(另外,在我的示例中,我可以通過Map等訪問字段的好處) –

1

您的UiBinder文件可能存在無法使用簡單構造函數構造的參數(例如,跨多個UiBinder文件共享樣式的CssResource)。 使用@UiFactory,您可以將這些資源注入到您的UiBinder文件中。

+0

丹尼爾,我理解這一部分,但我也可以用Java代碼來完成它,就像我們在UiBinder之前做的那樣。是否有任何表現,渲染或編譯優勢?是否值得重構不使用UiFactory的舊代碼? –

相關問題