2013-08-05 61 views
0

可重用的組件我有一個@UiConstrutor註解這個組件:UiBinder的如何:創建ui.xml

@UiConstructor 
public SearchWidget(Widget filterWidget, Widget resultWidget) { 
    ... 
} 
在ui.xml

,我必須寫類似:

<SearchWidget filterWidget="" resultWidget=""/> 

的問題是我希望能夠在ui.xml中構建一個複雜的小部件,並使用<SearchWidget>標記,例如:

<with field="filterWidget"> 
    <Widget> 
    ... 
    </Widget> 
</with> 

<With field="resultWidget"> 
    <Widget> 
    ... 
    </Widget> 
</with> 

,然後用它喜歡:

<SearchWidget filterWidget="{filterWidget}" resultWidget="{resultWidget}"/> 

是他們現有的接近語法?

回答

2

您可以嘗試使用@UiChild註釋(如果可以用相應的方法替換構造函數依賴項)。舉例來看corresponding javadoc

兩種新方法:

@UiChild SearchWidget#addFilterWidget(Widget w) 
@UiChild SearchWidget#addResultWidget(Widget w) 

UiBinder的(需要聲明新p命名空間爲您的自定義窗口小部件):

<p:SearchWidget> 
    <p:filterWidget><p:Widget>...</p:Widget></p:filterWidget> 
    <p:resultWidget><p:Widget>...</p:Widget></p:resultWidget> 
</p:SearchWidget> 
+0

爲什麼你必須包裝小部件兩次? 爲什麼不能只是? – Zerkz

+0

@Zerkz,''在這種情況下不是一個小部件。它是對'SearchWidget#addFilterWidget(Widget w)'方法的調用。正如你所看到的,你需要傳遞一個參數,在這種情況下它是' ...'。檢查我的答案中提到的javadoc,你會發現更詳細的例子。 –