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++;
}
}
});