0

GWT の非同期呼び出しが機能する方法や、コールバックの受信時にウィジェットが更新される方法について、いくつかの根本的な誤解に苦しんでいるようです。

2 つのインターフェイスと実装を作成しましたが、相互に通信しているようです。私は、Eclipse デバッガーをステップスルーしている間に観察された合理的な外観のデータに基づいて、この主張を行います。result以下の onSuccess メソッドの変数には、私が期待するものが含まれており、入力しようとしているグリッドは、終了results時にデータで満たされます。ループから。ただし、onSuccess呼び出しが返されると、呼び出しに従って GUI にグリッドが表示されuhpScrollPanel.setWidget(uhpGrid)ず、いかなる種類の例外もスローされません。

私は何か明らかなことを見落としているに違いありません。

    final ScrollPanel uhpScrollPanel = new ScrollPanel();
    uhpVert.add(uhpScrollPanel);
    uhpScrollPanel.setSize("100%", "100%");


    //build and populate grid
    UpdateHistoryServiceAsync uhpService = UpdateHistoryService.Util.getInstance();

    uhpService.getUpdateHistory(new AsyncCallback<List<UpdateHistoryEntryBean>>() {

        public void onFailure(Throwable caught) {
            System.out.println("OnFailure");
            caught.printStackTrace();

            final Label uhpErrorLabel = new Label("Server Unable to Grab History...");
            uhpScrollPanel.setWidget(uhpErrorLabel);
            uhpErrorLabel.setSize("100%", "100%");

        }

        public void onSuccess(List<UpdateHistoryEntryBean> result) {
            int length = result.size();

            final Grid uhpGrid = new Grid();
            uhpScrollPanel.setWidget(uhpGrid);
            uhpGrid.setBorderWidth(1);
            uhpGrid.setSize("100%", "100%");
            uhpGrid.resize(length, 3);

            int i = 0;
            for (UpdateHistoryEntryBean entry : result) {
                uhpGrid.setText(i, 0, String.valueOf(entry.getSourceId()));
                uhpGrid.setText(i, 1, entry.getTitle());
                uhpGrid.setText(i, 2, entry.getBody());
                i++;
            }
        }

    });
4

2 に答える 2

0

Your onSuccess() method is not defined correctly, as a parameter it receives an Object, and you must downcast it afterwards.

Meaning, the signature should be:

public void onSuccess(Object result)

After that, you can explicitly downcast the object you know you got back like so:

List<UpdateHistoryEntryBean> resultList = (List<UpdateHistoryEntryBean>) result;
于 2009-02-11T21:07:35.540 に答える
0

すぐに解決できるのは、グリッドを ScrollPanel ではなく VerticalPanel に追加することです。問題は、なぜそれが重要なのか、そしてこのジレンマをどのように回避するのかということです。

于 2009-02-11T21:09:28.750 に答える