首页访问时在GWTP中显示nester presenter

时间:2011-08-09 17:30:02

标签: gwt mvp gwt-platform

我正在使用GWT和GWTP开发小型应用程序,但我对这些技术完全陌生,需要一些帮助。

我尝试使用嵌套的演示者功能。但我怀疑,如果我理解其意图正确......

所以,我的应用程序应该有两种框架中的几个项目列表。将它们视为文件夹和文件。

我开发了MainPage视图和演示者,它只有几个布局面板。我想将我的项目列表(表示为自定义小部件)实现为单独的演示者。例如,如果它们被称为ItemsListPresenter

我在MainPagePresenter中创建了一个插槽,实现了ItemsListPresenter.revealInParent()方法以在该插槽中插入演示者。

但是我应该如何透露ItemsListPresenter?它onBind()甚至没有被召唤。

我知道,我必须为此调用PlaceManager的方法。我的问题是,如何实际执行此调用以符合最佳实践?

PlaceManager注入我的MainPagePresenter并直接在onBind()方法中调用它的方法会没问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您还必须实现MainPageView的setInSlot()方法,如下所示:

@Override
public void setInSlot(Object slot, Widget content) {
    if (slot == MainPagePresenter.TYPE_SetMainContent) {
       mainContentPanel.clear();
       if (content != null) {
          mainContentPanel.add(content);
       }

    } else {
      super.setInSlot(slot, content);
    }
}

其中MainPagePresenter.TYPE_SetMainContent是您的内容插槽,mainContentPanel是您要在其中显示嵌套演示者的MainView面板。此外,您的主要演示者不应该是一个地方,只有您的嵌套演示者才是地方。

您可以使用PlaceManager中的方法以编程方式切换当前显示的嵌套演示者(您一次只能显示一个)。您可以使用杜松子酒将PlaceManager注入您需要的位置。或者您可以使用以下菜单中的超链接进行切换:

<g:InlineHyperlink targetHistoryToken="{nameTokens.getFistItemsListPage}">
     First items list
</g:InlineHyperlink>
<g:InlineHyperlink targetHistoryToken="{nameTokens.getSecondItemsListPage}">
     Second items list
</g:InlineHyperlink>

如果您想一次显示多个子演示者,则必须使用presenter widgets而不是嵌套的演示者。