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

このエラーは、UIObject.setElementが呼び出されていない場合に発生します。null以外のウィジェットを使用して呼び出す場合はComposite.initWidget、そのウィジェットが独自の要素を正しく設定していることを確認してください。これが標準のGWTウィジェットである場合は、それを実行する必要がありますが、そうでない場合は、渡されるウィジェットがinitWidget正しく設定されていない可能性があります。

于 2012-05-03T16:38:07.467 に答える
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 に答える