Кажется, я страдаю от фундаментального непонимания того, как работают асинхронные вызовы GWT и / или как виджеты обновляются при получении обратного вызова.
Я создал два интерфейса, а также реализацию, и они, кажется, общаются друг с другом. Я делаю это заявление на основе разумно выглядящих данных, наблюдаемых при выполнении отладчика eclipse: переменная result
в методе onSuccess ниже содержит то, что я ожидаю, и сетка, которую я пытаюсь заполнить, в конечном итоге заполняется данными из results
при выходе из цикла. Однако, когда вызов onSuccess
возвращается, в моем графическом интерфейсе не отображается сетка в соответствии с вызовом 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++;
}
}
});