UiBinder如何:在ui.xml中创建可重用的组件

时间:2013-08-05 14:50:59

标签: gwt

我的这个组件带有@UiConstrutor注释:

@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}"/>

他们现在是否接近语法?

1 个答案:

答案 0 :(得分: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>