在GWT中恢复(撤消)实现

时间:2013-01-09 10:49:30

标签: java gwt gwt2 gwt-2.5

我们正在尝试使用GWT构建GUI框架。我们发现很难在框架中实现取消功能。

必需的功能是:

我们有CRUD屏幕,有弹出窗口,网格等。当用户更改GUI中的任何内容然后单击cancel()时,他应该收到一条通知消息,说明某些内容已发生变化。

我们尝试过的方法:

目前,我们正在尝试保留整个pojo对象的键值与值的哈希映射,并尝试将其与用户更改时更新的模型进行比较。但是,当用户直接从后端添加数据时,这会在每个pojo中添加大量不需要的代码,并且无法按预期工作。

有没有优雅的方法来实现这个功能?请注意 * 我们没有使用GWT *的编辑框架 (https://developers.google.com/web-toolkit/doc/latest/DevGuideUiEditors)应用

实施例: 假设我有这样的pojo:

public class Person {

    List<Address> address;
    PhoneNumber phoneData;


    // and so on along with getters and setters

}

我将如何为此编写通用克隆方法?即使我设法以某种方式做到这一点,将导致每个pojo中的大量代码(我们的应用程序有数百个),这似乎是不对的。

请注意,只要在GUI中更改某些内容以实现实时绑定,我们的pojo就会更新。

1 个答案:

答案 0 :(得分:0)

您的表单中有“保存”和“取消”按钮吗?

我建议你改变这个概念。在用户编辑它们时(例如在GMail,JIRA和许多其他现代应用程序中),在OnChange事件处理程序中立即更新对象属性。

将所有更新保存到会话堆栈作为UpdateAction对象,并让用户撤消调用UpdateAction.undo()方法的每个属性修改。

好处是:

  1. 此设计比“点击”编辑“ - 更新 - 点击”保存“”方案更加用户友好。

  2. 您不需要单独的查看/编辑表单/弹出对话框 - 只需一个表格即可查看和编辑。