我想做的是将几个请求全部收集在一起,然后将它们解雇一次
我的代码:

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)上更改。


所以我在做什么错?

最佳答案

append()的参数必须为干净的RequestContext

您可以将代码更改为:

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


或更简单地说:

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


理由:在内部,附加的RequestContext使用共享状态;调用append()时,附加的RequestContext的内部状态将替换为要附加的状态。如果不为空,则将丢失数据(没有合并),因此它只会失败。

关于gwt - 如何正确添加RequestContexts,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12004548/

10-10 16:20