我正在尝试将两个请求工厂调用嵌套在一起。我检索一个post对象,并且在success-method中我再次使用相同的对象(仅出于测试目的,我得到了与其他请求相同的行为,例如持久化)。
问题是:只有第一个请求到达服务器。
我没有收到任何错误消息。如果我调试代码,一切都会工作,直到第二个请求被触发。那么什么都没发生。后端上的方法没有被调用,前端没有显示错误,即使我为第二个请求的接收者实现了“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。
答案 0 :(得分:1)
尝试在第一个onSuccess方法中创建一个事件。处理事件后,您可以向服务器发送另一个请求。 查看How to use the GWT EventBus以使用eventbus。
Thomas Broyer声明也是对的。您应该只使用一个RequestFactory和一个ClientFactory!答案 1 :(得分:1)
根据Thomas Broyer建造第二个客户工厂时,这可能会出现问题。您应该进入ClientFactory.java接口,并在顶部添加单个客户端工厂实例。还将一个GWT.log(“ON SUCCESS”)放在onSuccess(PostProxy响应)的顶部,以确保它到达那里。
public interface ClientFactory {
public static final ClientFactory INSTANCE = GWT.create(ClientFactory.class);
...
然后你就可以像以下一样简单地做点什么
final PostRequest request = ClientFactory.INSTANCE.getRequestFactory().postRequest();