[英]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.