我在运行 GWT 应用程序时收到此错误:
java.lang.AssertionError: This UIObject's element is not set; you may be missing a call to either Composite.initWidget() or UIObject.setElement()
public class MainView extends Composite implements HeaderPresenter.MyView {
// Code omitted
}
在 Gin 客户端模块中.java配置() 函数我有以下代码:
bindPresenter(HeaderPresenter.class, HeaderPresenter.MyView.class,
MainView.class, HeaderPresenter.MyProxy.class);
在视图类中,initWidget() 被正确调用并与小部件一起传递,什么可能导致错误?
未调用UIObject.setElement
时会发生此错误。如果使用非 null 小部件调用Composite.initWidget
,请确保该小部件正确设置了自己的元素。如果这是一个标准的 GWT 小部件,它应该这样做,否则传递给 initWidget
的小部件可能没有正确设置。
这就是
我创建稍后将在视图中使用Composite
的方式。
public class MyCustomBox extends Composite {
private static MyCustomBoxUiBinder uiBinder = GWT.create(MyCustomBoxUiBinder.class);
interface MyCustomBoxUiBinder extends UiBinder<Widget, MyCustomBox> {
}
public MyCustomBox() {
initWidget(uiBinder.createAndBindUi(this));
}
}