0

我有一个广泛使用编辑器框架的应用程序。现在我要添加一个新功能:如果用户编辑实体,我想记录所做的更改并将它们存储在单独的数据存储实体中。这需要知道字段是否已更改、字段名称以及更改为的值。

这就是我想要实现的:

  1. 应用调用edit(bean);
  2. 用户进行更改,调用 flush() 并将数据发送回服务器。
  3. 在服务器处理程序中,来自 bean 的更改被发送到processChanges(List<String> paths)该 bean,然后创建并存储“field foo”更改为“bar”的记录,依此类推。
  4. 实体被保存,覆盖现有实体。

我使用 GWTP,目前使用 RPC 命令模式。我已经阅读了一些关于 RequestFactory 的内容,据我所知,它的主要好处之一是它只将称为“deltas”的更改字段发送回服务器以最小化有效负载,所以我想知道使用 RequestFactory 是否会更适合我的应用程序?

道歉 - 我一直在阅读 GWT 文档和 Javadocs 以了解 Editor Framework 和 RequestFactory,但我仍然很困惑。RequestFactoryEditorDriver.getPaths()似乎它可能是我需要的,但非常感谢任何建议或指针。

我可能可以观察客户端的变化,但这似乎是个坏主意。

4

1 回答 1

2

我相信您可以使用EditorVisitor类似于DirtCollectorEditor 框架内部使用的访问者来做到这一点(查看PathCollector如何在访问者中收集路径)。

我将首先访问层次结构以在调用之后收集初始值edit()(这已经由内部完成,但是无法访问其结果,并且无论如何DirtCollector它只收集叶值)。
然后您可以调用flush()ans 查看是否有错误,并可能验证您的对象以查看是否一切正常。然后您再次访问层次结构以收集更改(针对您之前收集的初始值),以便您可以将它们发送到服务器。

于 2014-10-27T15:44:10.580 回答