我正在使用GWT和GWTP开发小型应用程序,但我对这些技术完全陌生,需要一些帮助。
我尝试使用嵌套的演示者功能。但我怀疑,如果我理解其意图正确......
所以,我的应用程序应该有两种框架中的几个项目列表。将它们视为文件夹和文件。
我开发了MainPage
视图和演示者,它只有几个布局面板。我想将我的项目列表(表示为自定义小部件)实现为单独的演示者。例如,如果它们被称为ItemsListPresenter
。
我在MainPagePresenter
中创建了一个插槽,实现了ItemsListPresenter.revealInParent()
方法以在该插槽中插入演示者。
但是我应该如何透露ItemsListPresenter
?它onBind()
甚至没有被召唤。
我知道,我必须为此调用PlaceManager
的方法。我的问题是,如何实际执行此调用以符合最佳实践?
将PlaceManager
注入我的MainPagePresenter
并直接在onBind()
方法中调用它的方法会没问题吗?
提前致谢。
答案 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而不是嵌套的演示者。