Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本GWT异步调用错误_Gwt - Fatal编程技术网

基本GWT异步调用错误

基本GWT异步调用错误,gwt,Gwt,我似乎对GWT异步调用的工作方式和/或收到回调后小部件的更新方式有一些根本性的误解 我已经创建了两个接口以及实现,它们似乎正在相互通信。我是根据在使用eclipse调试器时观察到的外观合理的数据做出这一声明的:下面onSuccess方法中的result变量包含我所期望的内容,并且我尝试填充的网格在退出循环时被结果中的数据填充。但是,当onSuccess调用返回时,根据uhpScrollPanel.setWidgetuhpGrid调用,我的GUI中不会显示网格,并且不会引发任何类型的异常 我一定是

我似乎对GWT异步调用的工作方式和/或收到回调后小部件的更新方式有一些根本性的误解

我已经创建了两个接口以及实现,它们似乎正在相互通信。我是根据在使用eclipse调试器时观察到的外观合理的数据做出这一声明的:下面onSuccess方法中的result变量包含我所期望的内容,并且我尝试填充的网格在退出循环时被结果中的数据填充。但是,当onSuccess调用返回时,根据uhpScrollPanel.setWidgetuhpGrid调用,我的GUI中不会显示网格,并且不会引发任何类型的异常

我一定是忽略了一些明显的东西,有人知道该去哪里找吗

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

    });
onSuccess方法没有正确定义,因为它是一个参数,它接收一个对象,之后必须向下转换它

也就是说,签名应该是:

public void onSuccess(Object result)
在此之后,您可以显式向下投射您知道的对象,如下所示:

List<UpdateHistoryEntryBean> resultList = (List<UpdateHistoryEntryBean>) result;

事实证明,快速修复方法是将网格添加到垂直面板,而不是滚动面板。现在的问题是——为什么这很重要,我们如何摆脱这个困境?

Yuval,你确定吗?我正在使用GWT1.5和Java1.5—对泛型的完全支持。具体而言,该方法sig是通过工具支持GWTDesigner生成的。。。。在任何情况下,预期的数据都会出现在我的结果变量中,所以我认为这不是问题所在。谢谢你的尝试!这不是本例中的答案,但对于任何使用GWT1.4但通过某种工具错误地使用1.5规则编译的人来说,这仍然是一个有用的理智检查。我认为你需要将其作为一个单独的问题发布,因为它不再与你的问题标题有任何关系