2010-07-01 66 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,您無法確定您的異步服務將以何種順序執行。