2011-12-13 52 views
2

我有一個任務將複合小部件添加到主ui.xml文件中,但由於某種原因它不起作用。這裏是我的小部件代碼:如何使用uiBinder將複合小部件嵌入到主ui.xml文件中?

public class MyClass extends Composite { 
    @UiTemplate("MyClass .ui.xml") 
    interface MyClassUiBinder extends UiBinder<Widget, MyClass > { 
    } 

    private static MyClassUiBinder uiBinder = GWT.create(MyClassUiBinder.class); 

    @UiField Label label; 

    public MyClass() { 
     initWidget(uiBinder.createAndBindUi(this)); 
    } ... 

然後在我的主要viewImpl.ui.xml類: 我宣佈類包:

... xmlns:u="urn:com... client.view"> 

,然後將小部件本身:

<g:HTMLPanel ui:field="mainPanel" styleName="{style.mainPanel}"> 
<table align="center"> 
<tr> 
    <td align="center"> 
     <u:MyClass/> 
    </td> 
</tr> 

我也嘗試在viewImpl類中設置一個ui:field聲明,但在編譯時我得到一個錯誤:

ERROR在@UiField MyClass的,模板字段和所有者字段類型不匹配:com.google.gwt.dom.client.Element是不能分配給COM ... client.view.MyClass

當我從viewImpl和它編譯的ui.xml中取出@UiField聲明時,但是在加載頁面時該小部件不顯示。

我創建了另一個複合控件類,並試圖用一個按鈕控件複製它。

使用firebug我看到該元素已被添加到主ui.xml頁面,但它也不顯示,所以我的綁定不完全完成。

我在這裏錯過了什麼?

回答

5

我發現問題,GWT告訴我,我沒有正確地做我的聲明,但錯誤不像描述的那樣我喜歡。

在我使用的main.ui.xml文件:

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui" 
xmlns:u="urn:com.abc.client.view"> 

然而,最後一行應該有這個詞進口它:

xmlns:u="urn:import.com.abc.client.view"> 

這是我發現的answer

我希望這有助於某人,這會花費我很多時間!

1

您沒有在插入MyClass小部件的位置顯示更多的UI綁定標記,但是如果您的小部件位於某個原始HTML內,則需要在HTMLPanel中包含所有此HTML。

+0

它在HTML面板中。我只是沒有顯示該代碼。 – 2011-12-14 14:36:42

相關問題