【问题标题】:GWT MVP with a table带表的 GWT MVP
【发布时间】:2010-11-30 12:30:20
【问题描述】:

在 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

【问题讨论】:

    标签: gwt mvp


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      HasValue&lt;User&gt;HasValue&lt;TableRow&gt; 在这种情况下不起作用,因为这只会允许处理单行。 您也许可以使用HasValue&lt;List&lt;User&gt;&gt;,但这意味着您的视图必须在每次更改时呈现整个表格。

      我可能错了,但我认为对于表格,最好使用Supervising Presenter 而不是Passive View。 看看GWT Incubator 中的PagingScrollTable 小部件:

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

      对于PagingScrollTableMutableTableModel&lt;RowType&gt; 用作TableModel&lt;RowType&gt; 的实现。

      MutableTableModel&lt;RowType&gt; 又实现了以下接口:

      HasRowCountChangeHandlersHasRowInsertionHandlersHasRowRemovalHandlersHasRowValueChangeHandlers&lt;RowType&gt;

      PagingScrollTableregisters itself as listener on the MutableTableModel 从而获得非常细粒度的更新通知。生成的实现应该非常高效。

      【讨论】:

      • 可以有一个使用被动视图的表格,但每次您想要添加/删除一行或对任何内容进行排序时,您基本上都需要重新绘制整个表格。这是因为显示界面将具有诸如 setRows(List>widgets) 之类的方法,其中设置了整个表格,并且视图仅在网格中布置了许多小部件(每行一个 List,其中每个小部件都是一列)。在性能方面,我不确定它到底有多慢,因为我还没有用大量数据进行测试。我假设使用表模型会更快(如果速度是一个问题)。
      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2014-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-15
        • 1970-01-01
        相关资源
        最近更新 更多