大规模应用程序开发和MVP教程中的问题

Lum*_*mpy 4 gwt

我最近尝试遵循大规模应用程序开发和MVP教程.这个教程很棒,但我很难做一些事情.

如果您尝试将联系人添加到列表,则会创建联系人.如果您尝试添加其他联系人,则会转到您创建的最后一个联系人的编辑屏幕.添加第一个联系人后,无法再添加联系人.需要更改的内容,以便您可以添加多个联系人.

我试图让它发挥作用的变化:

每次按下添加按钮时创建一个新的editContactsView.这会打开一个空白的编辑屏幕,但新的联系人仍会覆盖之前的添加.

在确定新联系人的ID时,将contacts.size()更改为contacts.size()+ 1.

Igo*_*mer 6

实际上,有一些问题(从我可以看到):

  • 就像Lumpy已经提到过的那样,新Contact创建的via EditContactPresenter不会被赋予id(它的null).这是因为EditContactPresenter使用了Contact()没有设置id 的默认构造函数.有许多可能的解决方案:在默认构造函数中添加设置id(这样您就不必跟踪应用程序中其他位置的ID),将该功能委托给您的服务器(例如,创建您的数据库)生成下一个可用的ID并将其发回(或)只需contact.setId(whatever);在适当的位置添加一个EditContactsPresenter
  • AppController.java:134 - 这个例子重用了视图(这是一个好主意),如果你用它来创建一个新的,它就不会清除它Contact.解决方案:要么禁用视图重用(只是EditContactsView每次都重新创建),要么添加clear()或者类似于您的视图,并让Presenters在想要创建新条目时调用它,而不是编辑现有条目(在这种情况下,当前条目中的值会覆盖旧值,所以没关系).

奇怪的是,这个样本留下了这样的错误 - 虽然我知道它的主要目的是展示MVP和GWT如何结合在一起,但仍然:/