2017-02-19 2 views
0

Wie kann ich laden Widget, wenn Client json auf Server senden.Loading Resty-GWT

Von Beispiel in GWTP exmaple ich eine solche Methode

/** 
* 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()); 
} 

gefunden Wie zeige ich in der Lade resty-GWT, wenn er die Anfrage gesendet? Kann ich onLockInteraction mit resty-gwt verwenden?

+1

Nicht sicher über GWTP, aber vielleicht ist dies http://StackOverflow.com/A/38392507/5612847 nützlich. –

Antwort

1

Sie können den benutzerdefinierten Dispatcher von RestyGWT zum Nachverfolgen des Anforderungslebenszyklus verwenden. Der Dispatcher kann manuell oder mithilfe von Anmerkungen konfiguriert werden (https://resty-gwt.github.io/documentation/restygwt-user-guide.html). Beispieleinstellung manuell:

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)"); 
     } 
    } 
}); 

Statt Protokollierung, können Sie ein Ereignis mit dem EventBus senden, und dieses Ereignis verwenden, der die Anzahl der aktiven Anfrage zu halten und schließlich eine Ladeanzeige zeigen, wenn die Anzahl der aktiven Anfrage ist größer als 0.

+0

Wie kann ich Ereignis aufrufen ??? Ich habe keinen Moderator hier – LeshaRB

+0

Es hängt von Ihrer Architektur ab, aber Sie können immer eine statische Variable verwenden, um den eventBus zu teilen. Mit Gin können Sie einen RootRestService-Provider erstellen und den eventBus als Argument hinzufügen. –