我需要你对 gwt requestfactory 的帮助
考虑以下场景:
我从服务器获取现有实体(比如说发票):
InvoiceEntityProxy invoice = request1.getInvoice();
我想进行一些更改,因此我使用新请求对其进行了编辑:
InvoiceEntityProxy editableInvoice = request2.edit(invoice);
//make some changes to editableInvoice
现在我将第二个请求所做的更改发送到服务器,以创建预览:
request2.createPreview(editableInvoice);
发送请求后,发票代理被冻结,我通过将代理分配给新请求来重新启用编辑:
editableInvoice = request3.edit(editableInvoice);
如果一切正常,我想使用最新请求更新代理并将其发送到服务器:
request3.update(editableInvoice);
但是这些更改永远不会到达服务器,因为最新的请求 (request3) 对分配给 request2 的代理所做的更改一无所知。
我考虑了以下解决方案:
- 我可以重做最新代理的更改。但是为此,我必须遍历所有属性并再次设置它们(不是很友好的解决方案,因为每次向代理添加一些属性时我都必须调整方法)
- 另一种方法是将不带 id 的 proyx 发送到服务器,并将 id 作为更新方法的第二个参数发送。但这将是一种耻辱,因为不仅增量会被发送到服务器(这是 requestFactory 的最大特性之一)。
那么,当将代理分配给另一个请求时,让 request3 知道已经对代理所做的更改的最佳和最常见的做法是什么。