1

したがって、基本的に、このプロジェクトは、さまざまなテストタイプからのテスト結果のポータルを構築します。結果のフェッチと表示は問題ありません。ただし、結果のテーブルは正しい順序で表示されていません。表示される順序はランダムですが、RPC呼び出しがディスパッチされる順序が明確に指定されており、さらに支援するためにパネルにインデックスシステムを実装しました。

基本的に、アプリケーションは、垂直パネル内に含まれる3つの水平パネルで構成されます。

詳細な説明:新、中、旧は、テスト対象のソフトウェア製品の3つのバージョンを指します。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の順に戻ってくることを期待していますか?

もしそうなら、あなたは非同期呼び出しを連鎖させるか、それらすべてを一度に返す1つのajax呼び出しにそれらをグループ化する必要があるでしょう。非同期呼び出しはまさにそれです。返品の保証はありません。

于 2010-07-01T20:26:47.543 に答える
0

TestTableパネルごとに新しいインスタンスを作成してみてください。これで、3つのパネルすべてに同じインスタンスを追加します。これが役立つかどうかはわかりませんが、GWTで奇妙な動作が発生することがあるため、試してみる価値があります。

ただし、@ j flemmに同意します。非同期サービスが実行される順序は、決してわかりません。

于 2010-07-01T20:24:17.147 に答える