我们正在尝试使用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就会更新。
答案 0 :(得分:0)
您的表单中有“保存”和“取消”按钮吗?
我建议你改变这个概念。在用户编辑它们时(例如在GMail,JIRA和许多其他现代应用程序中),在OnChange事件处理程序中立即更新对象属性。
将所有更新保存到会话堆栈作为UpdateAction对象,并让用户撤消调用UpdateAction.undo()方法的每个属性修改。
好处是:
此设计比“点击”编辑“ - 更新 - 点击”保存“”方案更加用户友好。
您不需要单独的查看/编辑表单/弹出对话框 - 只需一个表格即可查看和编辑。