2012-10-03 88 views
1

爲了減少一些重複的代碼/類,我嘗試僅爲一個所有者類使用多個XML模板。 official GWT guide指出瞭如何做到這一點。GWT - 將不同的XML模板應用到同一個部件

public class FooPickerDisplay extends Composite{ 
    @UiTemplate("RedFooPicker.ui.xml") 
    interface RedBinder extends UiBinder<Widget, FooPickerDisplay> {} 
    private static RedBinder redBinder = GWT.create(RedBinder.class); 

    @UiTemplate("BlueFooPicker.ui.xml") 
    interface BlueBinder extends UiBinder<Widget, FooPickerDisplay> {} 
    private static BlueBinder blueBinder = GWT.create(BlueBinder.class); 

    @UiField Button button1; 
    } 

的 '@UiField' 會導致編譯錯誤,它說: 「現場Button1的在模板文件BlueFooPicker.ui.xml沒有相應的字段」

我RedFooPicker.ui.xml和BlueFooPicker.ui。 xml具有完全不同的內容,所以在RedFooPicker.ui.xml中有UiField =「button1」,但在BlueFooPicker.ui.xml中沒有button1。

所以我的問題是,如果有什麼辦法可以對同一個所有者類使用具有完全不同內容的多個XML模板而不會導致此類錯誤?

回答

3

不,每個UiBinder必須作用於不同的所有者類別。但是,您可以輕鬆地爲UiBinder之一創建內部類。文檔中的示例是關於使用一個或另一個,而不是同時使用兩個。

順便說一句,爲了減少重複,你最好試着把東西抽象成可重用的小部件。

相關問題