我不能肯定,如果你有相同的不尋常的動力將更多的比uibinder標籤下的兩個根部件要多。無論如何,這是我如何做到的。
因爲uibinder標籤只允許一個根部件,所以我放置一個HTML ui標籤作爲根部件,然後在該標籤中堆積我的多個僞根部件。
在以下示例中,請注意實際的根小部件沒有ui:field name,因爲我們不打算使用它。就我們而言,有效的根部件是「tabLayout」和「內容」。
文件Hello.ui.xml:
<ui:UiBinder
xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTML>
<g:TabLayoutPanel ui:field="tabLayout" ... >
blah ... blah
</g:TabLayoutPanel>
<g:VerticalPanel ui:field="content">
blah .. blah
</g:VerticalPanel>
</g:HTML>
</ui:UiBinder>
不要延長複合材料作爲模板背後的Java代碼。 創建一個由模塊入口點導入的類,或者直接在模塊上使用該模板。
我有很多原因,爲什麼我需要一個以上的根部件。在本例中,我有條件地附加「有效根部件」:
public class Hello
implements EntryPoint{
private static HelloUiBinder uiBinder = GWT.create(HelloUiBinder.class);
interface HelloUiBinder
extends UiBinder<Widget, Hello>{}
@UiField TabLayoutPanel tabLayout;
@UiField VerticalPanel content;
@Override public void onModuleLoad() {
uiBinder.createAndBindUi(this);
if (condition1)
RootPanel.get().add(tabLayout);
else
RootPanel.get().add(content);
blah ... blah
}
}
所以,訣竅是根本不使用實際的根部件。
你想完成什麼?例如,如果你只是想讓testLabel不出現,你可以給它一個styleName,它的CSS規則設置爲「display:none」。 – aem 2010-03-18 14:24:20