【发布时间】:2012-06-25 16:57:21
【问题描述】:
GWT 的 Editor 框架非常方便,它不仅可以用于编辑 POJOs,还可以用于只读显示。
但我不完全确定进行内联编辑的最佳做法是什么。
假设我有一个PersonProxy 和一对Presenter-View 用于显示和编辑PersonProxy。这个 Presenter-View 应该默认以只读模式显示 PersonProxy,如果用户按下 edit 按钮,它应该允许用户编辑 PersonProxy 对象。
我想出的解决方案是创建两个编辑器(PersonEditEditor 和PersonDisplayEditor),它们都通过UiBinder 添加到View。 PersonEditEditor 包含
ValueBoxEditorDecorators 和 PersonDisplayEditor 包含正常的 Labels。
最初我显示PersonDisplayEditor 并隐藏PersonEditEditor。
在View 中,我为每个编辑器创建两个RequestFactoryEditorDriver,并使其可以通过View 接口从Presenter 访问。我还在View 接口中定义了一个setState() 方法。
当Presenter 第一次显示时,我调用PersonDisplayDriver.display() 和setState(DISPLAYING)。
当用户点击 Edit 按钮时,我会从我的Presenter 调用PersonEditDriver.edit() 和setState(EDITING)。setState(EDITING) 将隐藏PersonDisplayEditor 并使@987654350 @可见。
我不确定这是否是最好的方法。如果不是,推荐的内联编辑方法是什么?在编辑器上进行单元测试的最佳方法是什么?
【问题讨论】:
-
如果我没有理解错误的问题,那么您想要编辑/查看 PersonProxy 对象的功能。为什么要为一个对象创建两个 Presenter-View?如果假设 GUI 除了小部件可见性之外具有相同的编辑/视图外观,那么您可以通过 make 方法来实现,该方法将设置控件属性,如 control.setEnabled(false);仅供查看(显示中)。
-
我有两个单独的编辑器用于编辑/查看。一种是使用标签和其他文本框。我想避免有两个 Presenter-View 对,因为代码大多是多余的或琐碎的(显示它的全部是关于在只读驱动程序上调用 display() 和编辑它调用 edit())。 Presenter-View par 更像是一个工作流的东西。
-
@Ümit 我采取完全相同的方法...
标签: gwt requestfactory gwt-editors