GWT:对多个页面使用相同的UI模板?

时间:2010-04-13 19:11:06

标签: eclipse gwt uibinder

如何使用与从Composite扩展的多个Java对象相同的UI模板(* .ui.xml文件)?

我需要构建几个页面,这些页面应该以相同的布局显示基本相同的信息,但是在一个页面上,某些字段将是可编辑的,而在另一个页面上,其他字段将是可编辑的。我想在ui.xml中只指定一次布局,并在不同的* .java类中创建不同的行为。

Eclipse在

上给我一个语法错误“缺少FirstAppUI.ui.xml”
@UiTemplate("Template.ui.xml")
public class FirstAppUI extends Composite {
  interface FirstAppUIUiBinder extends
          UiBinder<Widget, FirstAppUI> {
  }
}

谢谢! 简·普鲁萨科娃

1 个答案:

答案 0 :(得分:8)

我认为您需要将@UiTemplate注释放在Binder上,而不是放在Composite

此代码适用于我:

public class TestUiBinder extends Composite {

  @UiTemplate("SomeTemplate.ui.xml")
  interface TestUiBinderUiBinder extends UiBinder<Widget, TestUiBinder> {}
  private static TestUiBinderUiBinder uiBinder = GWT.create(TestUiBinderUiBinder.class);

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

public class AnotherTestUiBinder extends Composite {

  @UiTemplate("SomeTemplate.ui.xml")
  interface TestUiBinderUiBinder extends UiBinder<Widget, AnotherTestUiBinder> {}
  private static TestUiBinderUiBinder uiBinder = GWT.create(TestUiBinderUiBinder.class);

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

这似乎与applying different templates to the same widget的解决方案有些相似。