1

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

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

进一步解释:新、中、旧指的是被测软件产品的三个版本。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); }

每次刷新都会生成不同的测试类型水平显示顺序。版本被正确分组并垂直分开,但它们的水平顺序很混乱。我难住了!

4

2 回答 2

4

所以您希望测试按 SMOKE、BVTUNIX 然后 BVTWINDOWS 的顺序返回?

如果是这样,您将需要链接异步调用或将它们分组为一个 ajax 调用,一次返回所有这些调用。异步调用就是这样。不保证退货。

于 2010-07-01T20:26:47.543 回答
0

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

但是,我同意@j flemm的观点,即您永远无法确定异步服务将以什么顺序执行。

于 2010-07-01T20:24:17.147 回答