运行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 ClientModule.java configure()函数中,我有以下代码:
bindPresenter(HeaderPresenter.class, HeaderPresenter.MyView.class,
MainView.class, HeaderPresenter.MyProxy.class);
在视图类中,initWidget()被正确调用并与小部件一起传递,可能导致错误的原因是什么?
答案 0 :(得分:3)
未调用UIObject.setElement
时会发生此错误。如果使用非null小部件调用Composite.initWidget
,请确保该小部件正确设置其自己的元素。如果这是一个标准的GWT小部件,它应该这样做,但否则传递给initWidget
的小部件可能没有正确设置。
答案 1 :(得分:3)
这是我创建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));
}
}