簡體   English   中英

GWT請求工廠-在另一個請求的成功方法內觸發請求

[英]GWT request factory - Fire request inside of success method of another request

我試圖互相嵌套兩個請求工廠調用。 我檢索了一個發布對象,並且在成功方法中,我再次使用了相同的對象(僅出於測試目的,對於其他請求,我會得到相同的行為,例如持久化)。

問題是:只有第一個請求到達服務器。

我沒有收到任何錯誤消息。 如果我調試代碼,則一切正常,直到第二個請求被觸發為止。 那什么也沒發生。 即使我為第二個請求的接收者實現了“ onFailure”方法,也不會調用后端的方法,前端不會顯示任何錯誤。

public class RequestFactoryFindTest extends GWTTestCase{

    /**
     * must refer to a valid module that sources this class.
     */
    public String getModuleName() {
        return "com.Test.MyTest";
    }

    public void test(){
        final ClientFactory clientFactory = GWT.create(ClientFactoryImpl.class);
        final MyRequestFactory requestFactory = clientFactory.getRequestFactory();
        final PostRequest request = requestFactory.postRequest();


        request.findPost(1l).fire(new Receiver<PostProxy>() {

            @Override
            public void onSuccess(PostProxy response) {


                final ClientFactory clientFactory = GWT.create(ClientFactoryImpl.class);
                final MyRequestFactory requestFactory = clientFactory.getRequestFactory();
                final PostRequest request = requestFactory.postRequest();

                System.out.println("outer success");

                request.findPost(1l).fire(new Receiver<PostProxy>() {

                    @Override
                    public void onSuccess(PostProxy response) {
                        System.out.println("inner success");

                    }

                });

            }
        });


    }
}

有人可以解釋嗎?

編輯:

我嘗試了很多事情,例如在事件總線上觸發事件,捕獲事件並在那里進行內部請求工廠調用。 但是沒有任何效果。 我認為這是GWTTestcase與RequestFactory相結合的問題。 我還更改了代碼,因此僅使用一個clientFactory。

嘗試在第一個onSuccess方法中創建一個事件。 處理事件后,您可以向服務器發送另一個請求。 查看如何使用GWT EventBus來使用eventbus。

托馬斯·布羅耶的說法也是正確的。 您只能使用一個RequestFactory和一個ClientFactory!

當根據Thomas Broyer構造第二個客戶工廠時,這可能是個問題。 您可能應該進入ClientFactory.java接口,並在頂部添加單個客戶端工廠實例。 還要在onSuccess(PostProxy響應)的頂部放置一個GWT.log(“ ON SUCCESS”),以確保它到達那里。

public interface ClientFactory {

    public static final ClientFactory INSTANCE = GWT.create(ClientFactory.class); 
...

然后,您可以像下面這樣簡單地做一些事情

    final PostRequest request = ClientFactory.INSTANCE.getRequestFactory().postRequest();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM