1

运行 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() 被正确调用并与小部件一起传递,什么可能导致错误?

4

2 回答 2

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));
    }
}
于 2012-05-03T21:18:37.720 回答
3

UIObject.setElement未调用时会发生此错误。如果您Composite.initWidget使用非空小部件进行调用,请确保该小部件正确设置了自己的元素。如果这是一个标准的 GWT 小部件,它应该这样做,但否则传递给的小部件可能initWidget没有正确设置。

于 2012-05-03T16:38:07.467 回答