在GWT中使用MVP时,您将如何使用表格?例如,如果您有一个用户表,则您的 View 看起来像这样吗?
public interface MyDisplay{
HasValue<User> users();
}
还是会更像这样?
public interface MyDisplay{
HasValue<TableRow> rows();
}
在开始处理需要显示非原始数据列表的小部件之前,MVP颇具意义。有人可以阐明吗?
这个邮件列表文件似乎提出了相同的问题,但从未达到可靠的解决方案...
http://www.mail-archive.com/[email protected]/msg24546.html
最佳答案
在这种情况下,HasValue<User>
或HasValue<TableRow>
将不起作用,因为这仅允许处理单行。
您可能使用HasValue<List<User>>
,但这意味着您的 View 必须在每次更改时呈现整个表。
我可能是错的,但我认为对于表,最好使用Supervising Presenter而不是Passive View。
看看PagingScrollTable中的GWT Incubator小部件:
public class PagingScrollTable<RowType> extends AbstractScrollTable implements
HasTableDefinition<RowType>, ... {
...
TableModel<RowType> getTableModel()
...
}
对于
PagingScrollTable
, MutableTableModel<RowType>
用作 TableModel<RowType>
的实现。MutableTableModel<RowType>
依次实现以下接口(interface):HasRowCountChangeHandlers
, HasRowInsertionHandlers
, HasRowRemovalHandlers
, HasRowValueChangeHandlers<RowType>
PagingScrollTable
registers itself as listener on the MutableTableModel
并因此获得非常细粒度的更新通知。最终的实现应该非常高效。