GWT编辑器:如何记录字段和子编辑器的更改? (RequestFactory?)

时间:2014-10-27 13:24:12

标签: gwt requestfactory gwtp gwt-editors

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

这是我要实施的内容:

  1. App调用edit(bean);
  2. 用户进行更改,调用flush()并将数据发送回服务器。
  3. 在服务器处理程序中,来自bean的更改将发送到processChanges(List<String> paths),然后创建并存储“field foo”已更改为“bar”的记录,依此类推。
  4. 保存实体,覆盖现有实体。
  5. 我使用GWTP并且当前使用RPC命令模式。我已经阅读了一些关于RequestFactory的内容,据我了解,其主要好处之一是它只将已更改的字段“deltas”发送回服务器以最小化有效负载,所以我想知道是否使用RequestFactory更适合我的应用程序?

    道歉 - 我一直在阅读GWT文档和Javadocs的编辑框架和RequestFactory,但我仍然很困惑。 RequestFactoryEditorDriver.getPaths()似乎可能是我需要的,但任何建议或指示都非常感激。

    我可能会注意到客户端的变化,但这似乎是一个坏主意。

1 个答案:

答案 0 :(得分:2)

我相信你可以使用EditorVisitor来做到这一点,类似于编辑框架内部使用的DirtCollector访问者(请查看PathCollector如何收集路径访问者)。

我首先访问层次结构,以便在调用edit()之后收集初始值(这已在DirtCollector内部完成,但是无法访问它结果,它只收集叶值 然后你可以打电话给flush(),看看是否有错误,并可能验证你的对象,看看是否一切正常。然后再次访问层次结构以收集更改(与先前收集的初始值相对应),以便将它们发送到服务器。