2010-07-01 4 views
1

기본적으로이 프로젝트는 다양한 테스트 유형의 테스트 결과 포털을 구축합니다. 결과를 가져오고 표시하는 것이 좋습니다. 그러나 결과 테이블은 올바른 순서로 표시되지 않습니다. 표시되는 순서는 무작위이지만 RPC 호출이 전달되는 순서가 명확하게 지정되어 있으며 패널에 추가 지원을 위해 색인 시스템을 구현했습니다.이상한 GWT RPC 비헤이비어 + 디스플레이

기본적으로 응용 프로그램은 수직 패널 내에 포함 된 3 개의 수평 패널로 구성됩니다.

추가 설명 : 테스트중인 소프트웨어 제품의 새 버전, 중간 버전 및 이전 버전을 나타냅니다. TestTable은 사용자 정의 FlexTable이며 xxxPanel은 각각 HorizontalPanels입니다. 인덱스는 모두 onModuleLoad() 메서드 외부에서 0으로 초기화됩니다. 각 패널에는 해당 패널을 채우기 위해 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 순으로 다시 올 것이라고 기대하십니까?

그렇다면 비동기 호출을 연결하거나 한 번에 모두를 반환하는 하나의 아약스 호출로 그룹화해야합니다. 비동기 호출은 바로 그것입니다. 반환 명령은 없습니다.

+0

그냥 GWT에 익숙한 동료에게 말하면서 그는 내 마음대로 두 사람을 확인했습니다. 나는 서비스에 TestTypes 배열을 전달하고 그런 식으로 처리 할 것이다. 감사! 내가 평판을 얻으면 +1하겠다. -/ 나는 이것에 초심이다 :-) – xtremerunnerars

0

각 패널에 새로운 TestTable 인스턴스를 만들 수 있습니다. 이제 세 개의 패널 모두에 동일한 인스턴스를 추가합니다. 이것이 도움이되는지 확신 할 수 없지만 GWT에서 이상한 행동을 일으켜 가끔 시도 할만한 가치가 있습니다.

그러나 나는 @j flemm에 동의하지만 어떤 비동기 서비스가 실행될 지 확신 할 수 없습니다.