2013-08-29 79 views
1

考虑使用Ajax模式如何捕捉AJAX beforeSend事件GWT RPC

$.ajax({ 
     url: "someUrl",   
     beforeSend: function(){ 
      executeBeforeSend(); 
     }, 
     error: function(){ 
     //some error 
     }, 
     success: function(){ 
     //some success function 
     } 
    }); 

如果我们有beforeSend whick只是服务器调用之前执行下面的例子。

现在我们都知道GWT RPC使用Ajax来调用服务器asynchronous

private class MessageCallBack implements AsyncCallback<Message> { 
     @Override 
     public void onFailure(Throwable caught) { 
     /* server side error occured */ 

     } 
     @Override 
     public void onSuccess(Message result) { 
      /* server returned result, show user the message */ 
     }  
    } 

但是,有像onBeforeSend等没有方法。如何catchevent

有什么解决方法吗?

回答

1

您可以使用RpcRequestBuilder返回RequestBuilder的子类,其中您已覆盖send()方法。

+0

感谢thomos即期reply.Is有什么办法来警察了这一带'gwtp'模式我在哪里使用动作处理程序?我只需要'execute'函数之前的这个事件。 –

1

您可以使用javaQuery库来处理这个问题。 javaQuery是的jQuery到Java的部分端口,因此拥有所有的预期阿贾克斯方法:

$.ajax(new AjaxOptions().url("someUrl").dataType("json").type("GET")//get and json are default anyway 
         .beforeSend(new Function() { 
          @Override 
          public void invoke($ javaQuery, Object... params) { 
           executeBeforeSend(); 
          } 
         }) 
         .error(new Function() { 
          @Override 
          public void invoke($ javaQuery, Object... params) { 
           AjaxError error = (AjaxError) params[0]; 
           Log.err("Error %d: %s", error.status, error.reason); 
          } 
         }) 
         .success(new Function() { 
          @Override 
          public void invoke($ javaQuery, Object... params) { 
           if (params[0] instanceof JSONObject) { 
            JSONObject obj = (JSONObject) params[0]; 
            //TODO 
           } 
           else { 
            JSONArray array = (JSONArray) params[0]; 
            //TODO 
           } 
          } 
         }) 
         .complete(new Function() { 
          @Override 
          public void invoke($ javaQuery, Object... params) { 
           executeComplete(); 
          } 
         })); 
+0

其实,有了这个我必须改变我所有的RPC结构..虽然谢谢你试图帮助:) –