GWT编辑器:如何记录对字段和子编辑器的更改?(请求工厂?)

GWT编辑器:如何记录对字段和子编辑器的更改?(请求工厂?),gwt,requestfactory,gwtp,gwt-editors,Gwt,Requestfactory,Gwtp,Gwt Editors,我有一个广泛使用编辑器框架的应用程序。现在我想添加一个新特性:如果用户编辑一个实体,我想记录所做的更改并将它们存储在一个单独的数据存储实体中。这需要知道字段是否已更改、字段名称及其更改为的值 这就是我想要实现的: 应用程序调用编辑(bean) 用户进行更改,调用flush()并将数据发送回服务器 在服务器处理程序中,bean的更改被发送到processChanges(列表路径),然后创建并存储“fieldfoo”更改为“bar”的记录,依此类推 将保存实体,覆盖现有实体 我使用GWTP,目前使用

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

这就是我想要实现的:

  • 应用程序调用编辑(bean)
  • 用户进行更改,调用flush()并将数据发送回服务器
  • 在服务器处理程序中,bean的更改被发送到
    processChanges(列表路径)
    ,然后创建并存储“fieldfoo”更改为“bar”的记录,依此类推
  • 将保存实体,覆盖现有实体
  • 我使用GWTP,目前使用RPC命令模式。我读过一些关于RequestFactory的文章,据我所知,它的一个主要优点是它只将更改后的字段(称为“Delta”)发送回服务器以最小化负载,所以我想知道使用RequestFactory是否更适合我的应用程序

    抱歉-我一直在阅读编辑器框架和RequestFactory的GWT文档和Javadocs,但我还是很困惑。看起来这可能是我需要的,但任何建议或指点都非常感谢


    我可能可以在客户端观察更改,但这似乎不是一个好主意。

    我相信您可以使用,类似于编辑器框架内部使用的
    DirtCollector
    访问者(查看
    PathCollector
    了解如何在访问者中收集路径)

    我会在调用
    edit()
    之后访问层次结构以收集初始值(这已经由
    DirtCollector
    内部完成,但无法访问其结果,而且它只收集叶值)。

    然后您可以调用
    flush()
    ans查看是否有错误,并可能验证您的对象以查看是否一切正常。然后再次访问层次结构以收集更改(与之前收集的初始值相对),以便将更改发送到服务器。

    我看不出这与GWT编辑器或GWT有100%的关系。听起来更像是数据库/数据存储的重组问题,例如保存实体的历史记录。我想你误解了我的问题。当我调用
    EditorDriver.flush()
    时,重构模式将如何帮助我找出哪些字段的内容发生了更改?我正在重新保存同一个实体,而不是每次创建一个新副本,因此需要单独记录更改。谢谢Thomas。这似乎是一个简单的任务,所以我现在就不谈了。我将在不久的将来重构我所有的数据绑定代码,所以我可能会选择requestfactory,因为它看起来非常有用。我的答案根本没有链接到requestfactory,它只是使用编辑器框架。我明白,但是,与使用
    EditorVisitor
    遍历树相比,使用
    RequestFactory
    代理跟踪字段名称以及哪些字段已被编辑,这难道不更容易吗?我最初的评论应该是“这不是一项简单的任务”—Doh!这取决于你的限制。RequestFactory具有陡峭的学习曲线和相当多的约束;它显然不适合每一个用例。我认为访客方式可能比搬到工厂便宜。