2011-09-30 13 views
6

C'è un modo per intercettare le richieste RequestFactory sul lato client?Intercettare richieste GWT Richieste fabbisogno

voglio intercettare le chiamate in questo modo:

dummyRequest.dummyOperation().fire(new Receiver<String>() { 
    @Override 
    public void onSuccess(String response) {   
    } 
}); 

L'idea è di mostrare qualche indicazione di carico durante la comunicazione con il server.

risposta

6

È possibile sostituire l'implementazione del trasporto di default e passarlo nel corso RF di inizializzazione:

SampleRequestFactory factory = GWT.create(SampleRequestFactory.class); 
factory.initialize(new SimpleEventBus(), new DefaultRequestTransport()); 

È possibile ereditare da DefaultRequestTransport e l'override del metodo

send(String payload, TransportReceiver receiver) 

Fare qualche elaborazione prima di chiamare il super-implementazione e avvolgere TransportReceiver con un delegato per gestire il risultato.

3
final DefaultRequestTransport requestTransport = new DefaultRequestTransport() { 
     @Override 
     public void send(final String payload, final TransportReceiver receiver) { 
      GWT.log("making rpc"); 
      final TransportReceiver proxy = new TransportReceiver() { 
       @Override 
       public void onTransportFailure(final ServerFailure failure) { 
        GWT.log("rpc returned"); 
        receiver.onTransportFailure(failure); 
       } 

       @Override 
       public void onTransportSuccess(final String payload) { 
        GWT.log("rpc returned"); 
        receiver.onTransportSuccess(payload); 
       } 
      }; 

      super.send(payload, proxy); 

}