问题
Is there a way to intercept RequestFactory requests on client side?
I want to intercept calls like this:
dummyRequest.dummyOperation().fire( new Receiver<String>() {
@Override
public void onSuccess(String response) {
}
});
The idea is to show some loading indication when communicating with server.
回答1:
You can override the default transport implementation and pass it during RF initialization:
SampleRequestFactory factory = GWT.create( SampleRequestFactory.class );
factory.initialize( new SimpleEventBus(), new DefaultRequestTransport() );
You can inherit from DefaultRequestTransport and override the method
send(String payload, TransportReceiver receiver)
Do some processing before calling the super-implementation and wrap the TransportReceiver with a delegate to handle the result.
回答2:
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);
}
来源:https://stackoverflow.com/questions/7608235/intercepting-gwt-requestfactory-requests