3

我想要做的是收集几个请求并在我的代码后触发它们:

RequestContext contextA =requestFactory
        .dataRequest().save(...).to(...);
RequestContext contextB =requestFactory
        .itemRequest().save(...).to(...);
requestA.append(requestB);
requestA.fire();

dataRequest 和 item request 都扩展了 RequestContext

当我试图这样做时,我得到了:

原因:java.lang.IllegalStateException:提供的 RequestContext 已
在 com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext.append(AbstractRequestContext.java:484)更改

那么我做错了什么?

4

1 回答 1

3

to 的参数append()必须是clean RequestContext

您可以将代码更改为:

ItemRequest contextB = requestFactory.itemRequest();
contextA.append(contextB);
contextB.save(...).to(...);

或更简单地说:

requestA.append(requestFactory.itemRequest()).save(...).to(...);

基本原理:在内部, appendedRequestContext使用共享状态;调用时append(),附加的内部状态将RequestContext替换为您要附加的状态。如果它不是空的,你会丢失数据(没有合并),所以它只是失败了。

于 2012-08-17T11:17:30.120 回答