带表的GWT MVP

时间:2009-09-22 18:50:38

标签: gwt mvp

在GWT中使用MVP时,你会如何使用表?例如,如果您有一个用户表,您的视图是这样的吗?

public interface MyDisplay{

HasValue<User> users();

}

还是会更像这样?

public interface MyDisplay{

HasValue<TableRow> rows();

}

MVP非常有意义,直到您开始处理需要显示非原始数据列表的小部件。任何人都可以解释一下吗?

此邮件列表存档似乎提出了同样的问题,但从未达成可靠的解决方案......

http://www.mail-archive.com/google-web-toolkit@googlegroups.com/msg24546.html

3 个答案:

答案 0 :(得分:6)

在这种情况下,

HasValue<User>HasValue<TableRow>不起作用,因为这只允许处理单行。 您可以使用HasValue<List<User>>,但这意味着您的视图必须在每次更改时呈现整个表格。

我可能错了,但我认为最好使用Supervising Presenter代替Passive View。 请查看PagingScrollTable中的GWT Incubator小部件:

public class PagingScrollTable<RowType> extends AbstractScrollTable implements
    HasTableDefinition<RowType>, ... {
  ...
  TableModel<RowType> getTableModel() 
  ...
}

对于PagingScrollTableMutableTableModel<RowType>用作TableModel<RowType>的实现。

MutableTableModel<RowType>反过来实现以下接口:

HasRowCountChangeHandlersHasRowInsertionHandlersHasRowRemovalHandlersHasRowValueChangeHandlers<RowType>

PagingScrollTable registers itself as listener on the MutableTableModel因此可获得非常精细的更新通知。最终的实现应该非常高效。

答案 1 :(得分:2)

答案 2 :(得分:2)

这可能是一篇非常有趣的博文:

http://www.draconianoverlord.com/2010/03/31/gwt-mvp-tables.html