Действительно странное поведение GWT RPC + дисплей - PullRequest
1 голос
/ 02 июля 2010

Таким образом, по сути, этот проект строит портал результатов тестирования различных типов тестов.Выборка и отображение результатов в порядке;однако полученные таблицы отображаются не в правильном порядке.Порядок, в котором они отображаются, является случайным, но в нем четко указан порядок, в котором отправляются вызовы RPC, и я даже внедрил систему индексирования в своей панели для дальнейшей помощи.

По сути, приложение состоит из трехгоризонтальные панели находятся внутри вертикальной панели.

дальнейшее объяснение: новые, средние и старые относятся к трем версиям тестируемого программного продукта.TestTable - это просто настраиваемая FlexTable, а каждая из xxxPanels - это HorizontalPanels.Все индексы инициализируются в нуле вне метода 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){<br> testPortalSvcNew.getTestResults(5, newestVersion, TestType.SMOKE, callback); testPortalSvcNew.getTestResults(5, newestVersion, TestType.BVTUNIX, callback); testPortalSvcNew.getTestResults(5, newestVersion, TestType.BVTWINDOWS, callback); }

Каждое обновление создает потенциально различный горизонтальный порядок отображения типов тестов.Версии сгруппированы должным образом и разделены по вертикали, но их горизонтальное упорядочение является винтовым.Я в тупике!

Ответы [ 2 ]

4 голосов
/ 02 июля 2010

Значит, вы ожидаете, что тесты вернутся в порядке SMOKE, BVTUNIX, а затем BVTWINDOWS?

Если это так, вам нужно будет объединить асинхронные вызовы или сгруппировать их в один вызов ajax, который возвращает их все сразу. Асинхронные вызовы - это как раз то, что нужно. Там нет гарантии возврата заказа.

0 голосов
/ 02 июля 2010

Вы можете попробовать создать новый экземпляр TestTable для каждой панели.Теперь вы добавляете один и тот же экземпляр ко всем трем панелям.Я не уверен, поможет ли это, но иногда это может вызвать странное поведение в GWT, поэтому стоит попробовать.

Однако я согласен с @ j flemm , что вы никогда не можете быть уверены в том, чтозаказать ваши асинхронные услуги будут выполнены.

...