带MVP的GWT:将相同的演示者添加到一个容器中几次

时间:2010-01-22 11:27:43

标签: gwt mvp

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

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

display.getResultsContainer().add(goodPresenter.getDisplay().asWidget());

问题是我只看到一个搜索结果:看起来好像多次向容器添加相同的演示者不应该这样做。我一直在浏览互联网一段时间,但找不到任何相关的问题解决方案:(

有没有人有解决方案或方向指点我?如果需要,我可以为您提供其他信息。

致以最诚挚的问候,

尼尔斯

3 个答案:

答案 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。这可能看起来很奇怪,但我认为这是禁止的最佳做法。这是一个错误的想法!

因此,只需每次创建一个新的并添加它,它就能完美运行。