我有一个文本字段,我想在用户输入时定期保存。我想将它挂接到我现有的 RequestFactoryEditorDriver 框架中,但我想不出办法。问题是我必须等待所有driver.flush().fire()
呼叫返回才能edit()
再次呼叫,因此同时数据将不可编辑。
到目前为止,我最好的解决方案是在代理上方创建一个完整的层。它会等到它即将保存,然后编辑代理,复制更改并保留代理,但那时我失去了编辑器框架的大部分好处。有没有人有更好的想法?
我有一个文本字段,我想在用户输入时定期保存。我想将它挂接到我现有的 RequestFactoryEditorDriver 框架中,但我想不出办法。问题是我必须等待所有driver.flush().fire()
呼叫返回才能edit()
再次呼叫,因此同时数据将不可编辑。
到目前为止,我最好的解决方案是在代理上方创建一个完整的层。它会等到它即将保存,然后编辑代理,复制更改并保留代理,但那时我失去了编辑器框架的大部分好处。有没有人有更好的想法?
我相信另一件事会起作用,并且可能不会比雷的回答涉及更多的工作(实际上可能更少):不要编辑要保存的对象,而是它的副本(使用 创建RequestContext.create()
),在你之前制作一个副本编辑,然后RequestContext
在触发之前刷新并复制回您的 bean(在另一个 bean 中)。然而,这假定不会有并发编辑,因为与服务器的异步通信(用户可以继续编辑,如果其他人同时编辑同一个对象,您必须检测并解决“冲突”) . 要进行复制,请使用AutoBeanUtils.getAutoBean
将 bean 从 RF 代理中取出,然后AutoBeanVisitor
访问所有属性并将它们的值复制到另一个代理/autobean 中。
我敢打赌,在较低的水平上解决这个问题不会太难。例如,在 RequestFactory 本身周围放置一个包装器,使所有 void 返回同步触发它们的回调,假设 99% 的时间它们真的会成功。