如果我得到一个bean和一个对话框,并且它们与双向数据绑定结合在一起,那么当用户取消编辑时,回滚到原始bean的最佳方法是什么。
编辑1
如果用户以编辑模式打开对话框,则需要进行一些修改并按“ OK”,然后关闭此对话框,并更新基础bean。当我说“取消编辑”时,是指用户打开对话框并进行了一些修改,但按下了“取消”按钮。在这种情况下,基础Bean应该保持不变,但是由于数据绑定,它变得很脏,我希望将原始Bean返回。
我可以在对话框打开时克隆一个bean,如果用户按“确定”,则克隆的bean将被复制回原始bean。如果用户按下“取消”,则克隆的bean将被放弃。
我不知道这是否是个好方法。
最佳答案
我一直很成功地使用克隆方法。克隆方法有两种:绑定到克隆和绑定到原始。
绑定克隆将使之生效,因此在对话框启动时,屏幕上相同字段的其他任何绑定都不会更新。当按下OK键时,您将克隆复制到原始对象,取消时,您只需将克隆扔掉即可。
绑定到原始可允许屏幕更新绑定到同一字段的其他组件。按下“确定”后,您就将克隆扔掉了。按下取消后,您会将克隆复制到原始副本。
我赞成使用“绑定到克隆”方法,因为我认为在打开对话框时看到屏幕上其他组件的更新令人困惑。我认为这会引起取消是否会回滚对话框外部出现的更改的困惑。
另一种选择是使用可刷新的绑定策略,在这种策略中,可以以这样一种方式来设置绑定:在调用某种flush()方法之前,它不会更新对象。如果您的数据绑定框架不支持此功能,那么稍后需要大量工作来解决。