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