GWT - 将不同的XML模板应用于同一个小部件

时间:2012-10-03 21:55:15

标签: java templates gwt uibinder

为了减少一些重复的代码/类,我尝试仅为1个所有者类使用多个XML模板。 official GWT guide指出了如何做到这一点。

   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模板而不会导致此类错误?

1 个答案:

答案 0 :(得分:3)

不,每个UiBinder必须对不同的所有者类行事。但是,您可以轻松地为其中一个UiBinder创建内部类。文档中的示例是关于使用一个或另一个,而不是同时使用两者。

BTW,为了减少重复,你最好尝试将事物抽象成可重复使用的小部件。