我正在使用带有MVP模式的GWT,实际上实现了一个搜索结果页面。 搜索结果由图片+一些信息表示。我为搜索结果创建了一个演示者和一个视图(我现在将这个小方块称为“缩略图”),这样我就可以在搜索结果页面上多次添加它,并在以后的其他页面中使用它必要的。
在处理thumbnailPresenter的SearchResultsPresenter中,我只是循环搜索结果,向thumbnailPresenter提供正确的信息,并将视图的“asWidget”添加到容器中:
display.getResultsContainer().add(goodPresenter.getDisplay().asWidget());
问题是我只看到一个搜索结果:看起来好像多次向容器添加相同的演示者不应该这样做。我一直在浏览互联网一段时间,但找不到任何相关的问题解决方案:(
有没有人有解决方案或方向指点我?如果需要,我可以为您提供其他信息。
致以最诚挚的问候,
尼尔斯
答案 0 :(得分:3)
您必须确保您的演示者为每次调用创建一个新的Widget。否则,您将反复添加相同的小部件。
答案 1 :(得分:1)
您是否正在使用Google Gin与gwt-presenter框架结合使用?
GWT-Presenter的AbstractPresenterModule有方法bindPresenter,它将指定的presenter类绑定为单例。
假设您循环浏览结果数据记录并添加从提供者处获得的新演示者。如果此演示者绑定为单个,则返回的小部件将始终相同,因此您只能在页面中看到一个结果。
总结一下,而不是这样做:
bindPresenter(FooPresenter.class, FooPresenter.Display.class, FooDisplay.class);
这样做:
bind(FooPresenter.class);
bindDisplay(FooPresenter.Display.class, FooDisplay.class);
答案 2 :(得分:0)
是的,一个解决方案是创建一个新的View和一个新的Presenter。这可能看起来很奇怪,但我认为这是禁止的最佳做法。这是一个错误的想法!
因此,只需每次创建一个新的并添加它,它就能完美运行。