真奇怪的GWT RPC行为+显示

时间:2010-07-01 20:06:10

标签: ajax gwt rpc gwt-rpc

因此,本质上该项目构建了一个测试各种测试类型结果的门户。获取和显示结果很好;但是,结果表未按正确顺序显示。它们显示的顺序是随机的,但是它清楚地指定了调用RPC调用的顺序,我甚至在我的面板中实现了索引系统以进一步提供帮助。

基本上,应用程序由一个垂直面板中包含的三个水平面板组成。

进一步说明:new,mid和old指的是正在测试的软件产品的三个版本。 TestTable只是一个自定义FlexTable,每个xxxPanel都是Horizo​​ntalPanel。索引都在onModuleLoad()方法之外初始化为零。每个面板都有自己的服务,负责调度RPC调用以填充相应的面板。

public void onSuccess(List<TestResult> result) {

TestTable testTable1 = new TestTable(result);

if(result.get(0).getVrmf().equals(newestVersion)){
 newPanels.insert(testTable1, newIndex + 1); //insert adds element BEFORE specified index, so +1
 newPanels.addStyleName("horizontalPanelStyle");
 newIndex++;
}

if(result.get(0).getVrmf().equals(middleVersion)){
 midPanels.insert(testTable1, midIndex + 1); //insert adds element BEFORE specified index, so +1
 midPanels.addStyleName("horizontalPanelStyle");
 midIndex++;
}

if(result.get(0).getVrmf().equals(oldVersion)){
 oldPanels.insert(testTable1, oldIndex + 1); //insert adds element BEFORE specified index, so +1
 oldPanels.addStyleName("horizontalPanelStyle");
 oldIndex++;
}

}

};

以下是我的电话分派方式:
if(testPortalSvcNew != null){
testPortalSvcNew.getTestResults(5, newestVersion, TestType.SMOKE, callback); testPortalSvcNew.getTestResults(5, newestVersion, TestType.BVTUNIX, callback); testPortalSvcNew.getTestResults(5, newestVersion, TestType.BVTWINDOWS, callback); }

每次刷新都会生成测试类型可能不同的水平显示顺序。版本正确分组并垂直分隔,但它们的水平排序很棘手。我很难过!

2 个答案:

答案 0 :(得分:4)

所以你期望测试按照SMOKE,BVTUNIX和BVTWINDOWS的顺序返回?

如果是这样,您将需要链接异步调用或将它们分组到一个ajax调用中,该调用会立即返回所有这些调用。异步调用就是这样。不保证退货订单。

答案 1 :(得分:0)

您可以尝试为每个面板创建一个新的TestTable实例。现在,您要将相同的实例添加到所有三个面板。我不确定这是否有帮助,但这有时可能会导致GWT中的奇怪行为,因此值得一试。

但是我同意@j flemm您永远无法确定异步服务的执行顺序。