Загрузка Resty-GWT

Как я могу показать виджет загрузки, когда клиент отправляет json на сервер.

Из примера в примере GWTP я нашел такой метод

/**
* We display a short lock message whenever navigation is in progress.
*
* @param event The {@link LockInteractionEvent}.
*/
@ProxyEvent
public void onLockInteraction(LockInteractionEvent event) {
getView().setLoading(event.shouldLock());
}

Как показать в загрузке resty-gwt, когда он отправил запрос? Могу ли я использовать onLockInteraction с resty-gwt?


person LeshaRB    schedule 19.02.2017    source источник
comment
Не уверен насчет GWTP, но, возможно, этот stackoverflow.com/a/38392507/5612847 будет полезен.   -  person Alexander Leshkin    schedule 20.02.2017


Ответы (1)


Вы можете использовать настраиваемый диспетчер RestyGWT для отслеживания жизненного цикла запроса. Диспетчер можно настроить вручную или с помощью аннотаций (https://resty-gwt.github.io/documentation/restygwt-user-guide.html). Пример установки вручную:

RootRestService rest = GWT.create(RootRestService.class);
((RestServiceProxy) rest).setDispatcher(new DefaultDispatcher() {
    @Override public Request send(Method m, RequestBuilder rb) throws RequestException {
        RequestCallback callback = rb.getCallback();
        rb.setCallback(new RequestCallback() {
            @Override public void onResponseReceived(Request req, Response res) {
                log.info("request success (stop event)");
                callback.onResponseReceived(req, res);
            }
            @Override public void onError(Request req, Throwable ex) {
                log.info("request error (stop event)");
                callback.onError(req, ex);
            }
        });
        try {
            log.info("request initialized (start event)");
            return request = super.send(m, rb);
        } finally {
            log.info("request fail to initialize error (stop event)");
        }
    }
});

Вместо регистрации вы можете отправить событие с помощью eventBus и использовать это событие для отслеживания количества активных запросов и, наконец, показать индикатор загрузки, если количество активных запросов больше 0.

person Ignacio Baca    schedule 20.02.2017
comment
Это зависит от вашей архитектуры, но вы всегда можете использовать статическую переменную для совместного использования шины событий. Используя Gin, вы можете создать провайдера RootRestService и добавить eventBus в качестве аргумента. - person Ignacio Baca; 21.02.2017