【问题标题】:Using a RequestFactoryEditorDriver to update on the fly使用 RequestFactoryEditorDriver 即时更新
【发布时间】:2011-04-30 21:35:20
【问题描述】:

我有一个文本字段,我想在用户输入时定期保存它。我想将它挂接到我现有的 RequestFactoryEditorDriver 框架中,但我想不出办法。问题是我必须等待我的所有driver.flush().fire() 调用都返回,然后再调用edit(),因此在此期间数据将无法编辑。

到目前为止,我最好的解决方案是在代理上方创建一个完整的层。它会等到它即将保存,然后编辑代理,复制更改并保留代理,但那时我失去了编辑器框架的大部分好处。有没有人有更好的想法?

【问题讨论】:

  • 如果您可以快照或分支 RequestContext 并 fire() 分支的 RC,这会给您提供您正在寻找的行为吗?
  • 那太好了。然后RequestFactoryEditorDriverWithBranching 可以解决这个问题,我可以一遍又一遍地打电话给driver.flush().fire()。现在制作一个定期保存的好Editor 很困难,因为需要对驱动程序进行所有摸索——尤其是当我试图让演示者中的驱动程序远离视图时!

标签: gwt editor requestfactory


【解决方案1】:

我相信另一件事会起作用,并且可能不会比 Ray 的回答涉及更多的工作(实际上可能更少):不要编辑要保存的对象,而是它的副本(使用 RequestContext.create() 创建) ,在您编辑之前制作一个副本,然后在触发之前刷新并复制回您的 bean(在另一个 RequestContext 中)。 然而,这假定不会有并发编辑,因为与服务器的异步通信(用户可以继续编辑,如果其他人同时编辑同一个对象,您必须检测并解决“冲突”) . 要进行复制,请使用 AutoBeanUtils.getAutoBean 将 bean 从 RF 代理中取出,然后使用 AutoBeanVisitor 访问所有属性并将其值复制到另一个代理/autobean。

【讨论】:

    【解决方案2】:

    我敢打赌,在较低级别解决这个问题不会太难。例如,在 RequestFactory 本身周围放置一个包装器,使所有 void 返回同步触发它们的回调,假设 99% 的时间它们确实会成功。

    【讨论】:

    • 有趣的想法 - 是否有足够的框架部分可供我在不侵入 Google 代码的情况下执行此操作?为了解决另一个问题,我重写了一些CellTable,但是当我想升级到 2.2 并且我的重新实现不再适合时被烧毁了。 RequestFactory 比单元格的东西更难阅读,因为在编译时生成了多少 - 我在 Eclipse 中可信赖的 F3 按钮不起作用:(
    • 回复:你的 CellTable 东西,补丁总是受欢迎的:code.google.com/webtoolkit/makinggwtbetter.html。 [gah,太快点击保存。不敢相信回车键会这样做。更多内容]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多