1

ajaxパターンを使用した次の例を検討してください

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

beforeSendサーバー呼び出しの直前に実行されるウィックがある場合。

asynchronousこれで、GWT RPC がサーバー呼び出しに Ajax を使用することがわかりました。

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 などの方法catchはありませeventん。

回避策はありますか?

4

2 に答える 2

1

これを処理するには、 javaQueryライブラリを使用できます。javaQueryは jQuery を Java に部分的に移植したものであり、期待されるすべてのAjaxメソッドを備えています。

$.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();
                            }
                        }));
于 2013-09-01T02:21:06.287 に答える
1

メソッドをオーバーライドした場所RpcRequestBuilderのサブクラスを返すを使用できます。RequestBuildersend()

于 2013-08-29T08:56:34.020 に答える