使用干净的MVP模式填充GWT CellTable的真实示例?

时间:2010-12-29 15:04:26

标签: gwt mvp

我们正在使用GWT-Presenter框架并尝试使用CellTable组合可更新的网格。好像CellTable的一些GWT结构似乎不能轻易地将逻辑分解为干净的视图和演示者代码。

示例:1)在View的构造函数中,定义了CellTable,每个列都由匿名内部类创建,这些内部类扩展Column类以提供onValue()方法。 2)必须实现FieldUpdater接口以提供在用户改变单元格中的数据时执行的逻辑。这似乎最适合Presenter的onBind()方法,但FieldUpdaters通常需要访问属于视图的Cell或Column。 CellTable没有访问器方法来获取Columns或Cells,所以看起来Presenter获取它们的唯一方法是让我在Display界面上的View和accessors上创建大量成员变量。

任何人都可以提供很好的例子来处理GWT-Presenter中的CellTable或类似的MVP

2 个答案:

答案 0 :(得分:3)

我认为GWT MVP的主要观点是Presenters(2.1中的活动)不依赖于View实现,因此您可以轻松交换模拟视图以便于测试。

此外,可以使视图依赖于Presenters(=调用presenter方法),但反之亦然(反之亦然,但是通过接口)。

通常我只是在View中保留Presenter引用,这样FieldUpdater的内部类就可以在Presenter中调用方法。你可以将这些方法放在一个接口中,但它没有任何意义,因为只有一个版本的给定类型的Presenter。

或者,如果你想让事情更加分离,那么只需让View发送一个由Presenter监听的GWT事件。

答案 1 :(得分:1)

您是否尝试避免将Model类与View绑定?我尝试为cellTable做这个,但是维护代码变得令人困惑所以我决定让Model类与View结合。你可以在创建视图时通过一些通用参数来避免这种耦合。

-Saket