在 GWT 中使用 UiBinder 将 Ui 绑定到 java 接口

Binding Ui to java interface using UiBinder in GWT

假设我有一个由 classes B 和 C 实现的接口 A。

public class B implements A extends Composite {}
public class C implements A extends Composite {}

我创建了另一个 class D,它使用 GWT 中的 UiBinder 绑定到 Ui。

public class D {
  public A widget;
  ...
  // binds to D.ui.xml
  ...
}

D.ui.xml

 ...
 <A ui:field='widget'>
 ...

B 和 C 是绑定到它们自己的 ui.xml 文件的小部件,并在不同条件下注入到 class D。

当我尝试将 UI 绑定到 class D 中的接口 A(根据绑定符号为 B 或 C)时,我得到 "Expecting only widgets" 考虑到 A 没有实现 Composite 或 Widget class.

,这个错误是可以理解的

有没有办法完成这个行为,我不想为每个行为创建不同版本的 class D?

A 可以扩展 IsWidget。另外,显然,请确保您的 widget 字段是 @UiField(provided=true)