3

我们正在尝试使用 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 就会立即更新。

4

1 回答 1

0

所以你的表单中有“保存”和“取消”按钮?

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

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

好处是:

  1. 这种设计比“点击“编辑”-更新-点击“保存”的场景更加人性化。

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

于 2013-01-09T15:03:24.890 回答