Лучше всего помещать код loadMessage в метод prepareFromRequest в (GWTP)

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

Посмотрите на этот код:

String item="";
@Override
public void prepareFromRequest(PlaceRequest request){
         super.prepareFromRequest(request);
         item=request.getParameter("item", "");
         addToPopupSlot(loadingPresenter);
         GetData action=new GetData(item);
         dispatchAsync.execute(action, getDataCallback);
}
private AsyncCallback<GetDataResult> getDataCallback=new AsyncCallback<GetDataResult>(){
        @Override
        public void onFailure(Throwable caught) {
            // TODO Auto-generated method stub
            loadingPresenter.hide();
        }

        @Override
        public void onSuccess(GetDataResult result) {
            // TODO Auto-generated method stub
            loadingPresenter.hide();
                    //code to show data here
        }
}

Хорошо, этот код отлично работает в IE и в Firefox, но не в Chrome. То есть:

В Хроме после обновления страницы индикатор не скрывался, хотя все данные показывались корректно. В IE и Firefox индикатор спрятался правильно.

Я думаю, что с Chrome что-то не так, почему-то они не могут вызвать loadingPresenter.hide();

Что я должен делать? Я не думаю, что мне следует удалять loadingPresenter, потому что метод getData также вызывался, когда пользователь нажимал кнопку, поэтому мне нужно, чтобы он указывал, что данные загружаются. Но если я использую loadingPresenter, я не могу работать в Chrome.

И что я должен делать?


person Tum    schedule 23.01.2014    source источник


Ответы (1)


Я решил проблему, просто поместил callMethod внутрь onReset, тогда все будет хорошо, потому что prepareFromRequest был вызван слишком рано, потому что какой-то другой виджет еще не был привязан, и это вызвало проблему. Это должно работать во всех браузерах.

String item="";
@Override
public void prepareFromRequest(PlaceRequest request){
         super.prepareFromRequest(request);
         item=request.getParameter("item", "");

}

@Override
public voi onReset{
         super.onReset();
         addToPopupSlot(loadingPresenter);
         GetData action=new GetData(item);
         dispatchAsync.execute(action, getDataCallback);
}
person Tum    schedule 23.01.2014