【问题标题】:Revealing nester presenter in GWTP on first page access在第一页访问时在 GWTP 中显示嵌套演示者
【发布时间】:2011-08-10 05:53:40
【问题描述】:

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

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

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

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

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

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

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

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

提前致谢。

【问题讨论】:

    标签: gwt mvp gwt-platform


    【解决方案1】:

    您还必须实现 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>
    

    如果要同时显示多个子演示者,则必须使用presenter widgets 而不是嵌套演示者。

    【讨论】:

    • 谢谢!它对我的解释超出了我的预期。
    猜你喜欢
    • 2013-02-23
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多