2011-02-28 60 views
2

我有一个文本字段,我想随着用户的输入而定期保存。我想将它与我现有的RequestFactoryEditorDriver框架联系起来,但我想不出一个办法。麻烦的是,我必须等待我所有的driver.flush().fire()调用返回,然后再次调用edit(),所以同时数据将不可编辑。使用RequestFactoryEditorDriver实时更新

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

+0

如果你可以快照或分支RequestContext和fire()分支的RC,会给你你想要的行为吗? – BobV 2011-02-28 18:38:35

+0

那会很棒。然后'RequestFactoryEditorDriverWithBranching'可以解决这个问题,我可以反复调用'driver.flush().fire()'。定期保存一个好的编辑器是很困难的,因为所有需要的驱动程序都在摸索 - 特别是如果我试图让驾驶员远离视线的话主持人! – 2011-02-28 19:08:06

回答

3

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

1

我敢打赌,在较低的水平上解决这个问题并不难。例如,在RequestFactory中添加一个包装器,使得所有的void返回值同步触发它们的回调,假定99%的时间它们真的会成功。

+0

有趣的想法 - 足够的部分框架可以让我做到这一点,而不会侵入Google代码?为了解决不同的问题,我重写了一些'CellTable',但是当我想升级到2.2并且我的重新实现不再适合时,它被烧毁了。由于在编译时产生了多少东西,RequestFactory比单元格更难读 - 我在Eclipse中可靠的F3按钮不起作用:( – 2011-02-28 19:15:04

+0

Re:你的CellTable的东西,修补程序总是受欢迎的:http://代码。 google.com/webtoolkit/makinggwtbetter.html。[gah,点击保存得太快。不能相信输入键会这样。More com to] – rjrjr 2011-02-28 22:14:34