在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
答案 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()
...
}
对于PagingScrollTable
,MutableTableModel<RowType>
用作TableModel<RowType>
的实现。
MutableTableModel<RowType>
反过来实现以下接口:
HasRowCountChangeHandlers
,HasRowInsertionHandlers
,HasRowRemovalHandlers
,HasRowValueChangeHandlers<RowType>
PagingScrollTable
registers itself as listener on the MutableTableModel
因此可获得非常精细的更新通知。最终的实现应该非常高效。
答案 1 :(得分:2)
这个讨论确实解决了类似的问题:
http://groups.google.com/group/google-web-toolkit/browse_thread/thread/4887a7565d05f349?tvc=2
答案 2 :(得分:2)