远程人口的GWT列表框

时间:2011-04-26 12:02:40

标签: gwt asynchronous

我正在尝试使用RPC调用从服务器获取数据 - >数据库然后填充我的客户端小部件,如ListBox,Grid等。问题是,由于调用是异步的,因此无法保证客户端运行时将等待服务器调用返回,然后使用回调结果中的数据填充小部件。有没有办法做到这一点?

的问候, Ĵ

2 个答案:

答案 0 :(得分:0)

按照设计,无法在GWT中发出同步请求。但是,在数据从服务器返回之前,您可以避免显示小部件(并且可能显示微调器)。执行此操作的方法是使窗口小部件在从服务器获取数据时使用的AsyncCallback调用的方法中可见。

下面是一个例子(实际上,你可能会在表单级别执行此操作,而不是使用小部件级别,但是您可以理解这一点。)

AsyncCallback<List<Option>> callback = new AsyncCallback<List<Option>>() {
  public void onFailure(Throwable caught) {
    processError(caught);
  }

  public void onSuccess(List<Option> result) {
    updateListBox(result);
    showListBox();
  }
};
myRemoteService.getOptions(callback);

答案 1 :(得分:0)

当您开始获取数据时,您可能会显示模式对话框(带有“获取数据”或任何更高级别的消息),然后您可以在RPC调用终止时关闭对话框。另一种方法是使用您根据需要激活/取消激活的小型加载面板:例如here