2010-07-01 40 views
1

所以基本上这个项目建立了来自各种测试类型的测试结果的入口。提取和显示结果很好;但是,结果表格没有以正确的顺序显示。它们显示的顺序是随机的,但它明确指定了调用RPC调用的顺序,我甚至在我的面板中实施了索引系统以进一步提供帮助。真的很奇怪的GWT RPC行为+显示

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

进一步说明:新,中,旧指被测试软件产品的三个版本。 TestTable只是一个自定义FlexTable,每个xxxPanel都是Horizo​​ntalPanels。索引都在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

所以你期待测试回来的顺序SMOKE,BVTUNIX然后BVTWINDOWS?

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

+0

刚刚跟一个熟悉GWT的同事说话,他确认了我的恐惧。我只需将该服务传递给一个TestTypes数组,并以这种方式处理它。谢谢! 我会+1你,如果我有声望: -/ 我是新来的所有这些:-) – xtremerunnerars 2010-07-01 20:41:27

0

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

但是,我同意@j flemm,您无法确定您的异步服务将以何种顺序执行。