在GWT中恢复(撤消)实现
我们正在尝试使用GWT构建GUI框架。 我们发现很难在框架中实现取消function。
所需function如下:
我们有CRUD屏幕,有弹出窗口,网格等。 当用户更改GUI中的任何内容然后单击cancel()时,他应该收到一条通知消息,说明某些内容已更改。
我们尝试过的方法:
目前,我们正在尝试保留整个pojo对象的键值与值的哈希映射,并尝试将其与用户更改时更新的模型进行比较。 但是,当用户直接从后端添加数据时,这会在每个pojo中添加大量不需要的代码,并且无法正常工作。
有没有优雅的方法来实现这个function? 请注意* 我们的应用程序中没有使用GWT *的编辑器框架 (https://developers.google.com/web-toolkit/doc/latest/DevGuideUiEditors)。
示例:假设我有一个像这样的pojo:
public class Person { List address; PhoneNumber phoneData; // and so on along with getters and setters }
我将如何为此编写通用克隆方法? 即使我设法以某种方式做到这一点,将导致每个pojo中的大量代码(我们的应用程序有数百个),这似乎是不正确的。
请注意,只要在GUI中更改了某些内容以实现实时绑定,我们的pojo就会更新。
您的表单中有“保存”和“取消”按钮吗?
我建议你改变这个概念。 在用户编辑它们时(例如在GMail,JIRA和许多其他现代应用程序中)在OnChange事件处理程序中立即更新对象属性。
将所有更新保存到会话堆栈作为UpdateAction对象,并让用户撤消调用UpdateAction.undo()方法的每个属性修改。
好处是:
-
这种设计比“点击”编辑“ – 更新 – 点击”保存“”方案更加用户友好。
-
您不需要单独的视图/编辑表单/弹出对话框 – 只需一个表单即可查看和编辑。