Google chrome 将loadingMessage代码放入(GWTP)中的prepareFromRequest方法中是最佳做法吗

Google chrome 将loadingMessage代码放入(GWTP)中的prepareFromRequest方法中是最佳做法吗,google-chrome,gwt,gwtp,Google Chrome,Gwt,Gwtp,我想检查加载页面时的数据。我还想在检查数据时弹出加载指示器,以便用户知道页面正在加载数据 请看以下代码: String item=""; @Override public void prepareFromRequest(PlaceRequest request){ super.prepareFromRequest(request); item=request.getParameter("item", ""); addToPopupSlot(l

我想检查加载页面时的数据。我还想在检查数据时弹出加载指示器,以便用户知道页面正在加载数据

请看以下代码:

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
        }
}
String item=”“;
@凌驾
public void prepareFromRequest(PlaceRequest请求){
super.prepareFromRequest(请求);
item=request.getParameter(“item”,“”);
AddTopoppupSlot(加载演示者);
GetData操作=新的GetData(项目);
execute(action,getDataCallback);
}
private AsyncCallback getDataCallback=新建AsyncCallback(){
@凌驾
失败时的公共无效(可丢弃){
//TODO自动生成的方法存根
加载Presenter.hide();
}
@凌驾
成功时公共无效(GetDataResult){
//TODO自动生成的方法存根
加载Presenter.hide();
//在这里显示数据的代码
}
}
好的,这段代码在IE和Firefox中运行良好,但在Chrome中不正常。即:

在Chrome中,刷新页面后,尽管所有数据都正确显示,但指示器并未隐藏。在IE和Firefox中,指示器被正确隐藏

我认为Chrome有点问题,他们不能调用
loadingPresenter.hide()

我该怎么办?我认为我不应该删除
loadingPresenter
方法,因为当用户单击按钮时,
getData
方法也被调用,所以我需要它来指示数据正在加载。但是如果我使用
loadingPresenter
,那么我就不能在Chrome中运行


那么我该怎么办呢?

我解决了这个问题,只需将callingMethod放在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);
}