2012-08-17 39 views
2

我想要做的是所有的聚集在一起的几个请求,并解雇他们一旦 我的代码:如何正确添加RequestContexts

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

dataRequest和项目请求都伸出的RequestContext

当我尝试要做到这一点像,我得到:

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

所以什么即时做错了什么?

回答

2

参数为append()必须为cleanRequestContext

您可以更改您的代码:

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

或者更简单地说:

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

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