1

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

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

因此,我的应用程序应该在 2 种框架中有多个项目列表。将它们视为文件夹和文件。

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

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

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

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

可以注入PlaceManagermy MainPagePresenter,并直接在方法中调用它的onBind()方法吗?

提前致谢。

4

1 回答 1

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 中的方法以编程方式切换当前显示的嵌套演示者(一次只能显示一个)。您可以使用 gin 将 PlaceManager 注入您需要的地方。或者您可以使用菜单中的超链接进行切换,如下所示:

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

如果要一次显示多个子演示者,则必须使用演示者小部件而不是嵌套演示者。

于 2011-08-09T21:53:40.763 回答