错误绑定视图到演示者?

时间:2012-05-03 10:46:22

标签: gwt dependency-injection guice gin gwt-platform

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

2 个答案:

答案 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));
    }
}