Как реализовать индикатор выполнения с помощью GWT?

В приложении GWT у меня есть длинный процесс, который выполняется на стороне сервера и вызывается с помощью rpc (диспетчер GWT), и я хочу, чтобы клиент получал обратную связь в виде индикатора выполнения, показывающего сообщения и общий прогресс. Мой вопрос в том, как восстановить сообщения и прогресс динамически с сервера?

меня интересует любое решение

Спасибо заранее за вашу помощь.


person user405458    schedule 01.08.2011    source источник


Ответы (5)


Посмотрите на индикатор выполнения получения в инкубаторе. . Вот еще один пример его использования.


ОБНОВИТЬ

Если вы хотите отображать прогресс на стороне клиента, вам нужно будет периодически выполнять асинхронные вызовы на сервер, чтобы получить значение прогресса. Другими словами, серверу нужно куда-то писать/хранить, как далеко он продвинулся со своим прогрессом. Затем клиент делает асинхронный вызов серверу, который считывает это значение и отправляет его обратно клиенту, который может обновить индикатор выполнения.

person Nico Huysamen    schedule 01.08.2011
comment
спасибо за ответ, на самом деле моя проблема не в компоненте индикатора выполнения, а в том, как получить значения с сервера, чтобы иметь возможность динамически изменять темы в панели прогресса. - person user405458; 01.08.2011
comment
Это должно быть мертво. Он даже не отображается в GWT Designer и выдает ошибку The import com.google.gwt.widgetideas cannot be resolved. Попробуйте java2s.com/Code/Java/GWT/GWTprogressbar.htm. вместо. - person Chloe; 08.10.2013
comment
@Chloe - Вау, отрицательный голос, потому что ответ старше года больше не применяется ... Молодец ... - person Nico Huysamen; 08.10.2013
comment
Казалось неправильным, что главный ответ был неправильным. Случайный пользователь будет ожидать, что самый правильный ответ будет вверху. - person Chloe; 09.10.2013
comment
@Chloe - Ты вообще знаешь, что такое инкубатор gwt? Это место, где сообщество может коммитить код, который может попасть в ствол. Исходник по-прежнему доступен по ссылке и может быть использован. То, что он не "отображается" в дизайнере, не означает, что его нельзя использовать... - person Nico Huysamen; 09.10.2013

Обычный асинхронный вызов должен сделать это. Но вам также потребуется реализовать какой-то механизм опроса со стороны клиента, чтобы он периодически отправлял асинхронный запрос на сервер.

См. руководства по асинхронным вызовам http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html

Для механизма опроса вы должны иметь возможность сделать это с помощью простого цикла while. Внутри цикла while продолжайте вызывать серверный вызов getStatus(), пока не дойдете до состояния завершения 100%.

person Basanth Roy    schedule 01.08.2011

Или вы можете использовать Channel API. Он доступен как на Python, так и на Java (и, возможно, на других поддерживаемых лангурах). https://developers.google.com/appengine/docs/java/channel/

person Bart    schedule 02.05.2014

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

person Nick Siderakis    schedule 20.08.2011

http://www.java2s.com/Code/Java/GWT/GWTprogressbar.htm

Вы должны использовать таймер для периодического опроса сервера и сохранять на сервере подсчет хода выполнения.

person Chloe    schedule 08.10.2013