GWT with MVP:将同一演示者多次添加到一个容器中

GWT with MVP:将同一演示者多次添加到一个容器中,gwt,mvp,Gwt,Mvp,我正在用MVP模式与GWT合作,实际上实现了一个搜索结果页面。 搜索结果由图片+一些信息表示。我为搜索结果创建了一个演示者和一个视图(我现在称这个小正方形为“缩略图”),这样我可以多次将它添加到搜索结果页面,并在以后的其他页面中使用它(如果需要) 在我的SearchResultsPresenter中,它处理thumbnailPresenter,我只是在搜索结果上循环,向thumbnailPresenter提供正确的信息,并将视图的“asWidget”添加到容器中: display.getResu

我正在用MVP模式与GWT合作,实际上实现了一个搜索结果页面。 搜索结果由图片+一些信息表示。我为搜索结果创建了一个演示者和一个视图(我现在称这个小正方形为“缩略图”),这样我可以多次将它添加到搜索结果页面,并在以后的其他页面中使用它(如果需要)

在我的SearchResultsPresenter中,它处理thumbnailPresenter,我只是在搜索结果上循环,向thumbnailPresenter提供正确的信息,并将视图的“asWidget”添加到容器中:

display.getResultContainer().add(goodPresenter.getDisplay().asWidget())

问题是,我只看到一个搜索结果:似乎不应该像这样将同一个演示者多次添加到容器中。我浏览互联网已有一段时间了,但找不到任何相关的解决方案:(

有没有人能为我提供解决方案或方向?如果需要,我可以为您提供更多信息

致以最良好的祝愿


Nils

您必须确保演示者为每次通话创建一个新的小部件。否则,您会一次又一次地添加相同的小部件。

是的,一个解决方案是创建一个新视图和一个新演示者。这可能看起来很奇怪,但我认为这是禁止的最佳做法。这是一个错误的想法


因此,只要每次创建一个新的并添加它,它就可以完美地工作。

您是否将Google Gin与gwt presenter framework结合使用

GWT Presenter的AbstractPresenterModule具有方法bindPresenter,该方法将指定的Presenter类绑定为单例

假设您在结果数据记录中循环,并添加从提供者处获得的新演示者。如果此演示者绑定为单例,则返回的小部件将始终相同,因此您在页面中只能看到一个结果

总之,不要这样做:

bindPresenter(FooPresenter.class, FooPresenter.Display.class, FooDisplay.class);
这样做:

bind(FooPresenter.class);
bindDisplay(FooPresenter.Display.class, FooDisplay.class);

是的,这看起来不像GWT本身的问题,您可能正在尝试将相同的
小部件
(显示)一次又一次地添加到
面板中(当然,这只会导致它显示一次)-出于调试目的,您可以使用
getWidgetIndex
或您选择的容器中的类似内容,例如
断言
面板
没有该
小部件