2012-08-17 48 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的內部狀態將替換爲您要追加的內部狀態。如果它不是空的,你會丟失數據(沒有合併),所以它只是失敗。