GWT-如何将网站的层次结构映射到活动/场所/窗口?

GWT-如何将网站的层次结构映射到活动/场所/窗口?,gwt,architecture,Gwt,Architecture,我是新来这里和GWT的,我的英语不太好,请原谅。 我需要使用GWT创建一个网站。该网站具有层次结构:主要的全局标题和几个按钮。每个按钮都会打开应用程序的新部分,该部分有自己的子选项卡。假设每个子选项卡都是可导航的。例如: 主要形式 ->应用程序问题 --->偏好 --->创造一些东西 --->编辑某物 ->管理 --->用户管理 -->政策 现在,我想了解使用GWT的最佳选择是什么。 我想到了两个选择: 1.在入口点将有主要活动。在其开始功能中,我们将为每个子菜单(=子选项卡=子菜单)创建Act

我是新来这里和GWT的,我的英语不太好,请原谅。 我需要使用GWT创建一个网站。该网站具有层次结构:主要的全局标题和几个按钮。每个按钮都会打开应用程序的新部分,该部分有自己的子选项卡。假设每个子选项卡都是可导航的。例如:

主要形式 ->应用程序问题 --->偏好 --->创造一些东西 --->编辑某物

->管理 --->用户管理 -->政策

现在,我想了解使用GWT的最佳选择是什么。 我想到了两个选择: 1.在入口点将有主要活动。在其开始功能中,我们将为每个子菜单(=子选项卡=子菜单)创建ActivityManager。每个子菜单将为每个子菜单创建活动管理器,依此类推。 我们将为每个活动管理器设置一个显示,并触发更改地点事件

问题是,我需要管理位置(所有位置都应转到主活动,该活动应采用其参数并委托给子位置,等等) 否则,当用户复制并粘贴url时,只会导致子活动启动,而父活动未初始化

  • 我可以创建widges的OOP层次结构,所以层次结构树中的每个叶都有一个活动。还将有匹配的widges层次结构。每个leaf widge都包含自己的组件及其所有父组件(例如-表单的主标题) 在此选项中,只有一个活动活动
  • 最好的选择是什么?您将如何实现层次结构


    谢谢……

    菜单层次结构的最佳选择是使用嵌套小部件。这些可以深入到您需要的地方,是构建菜单的一个很好的替代方案

    我知道你还想管理两件事:

  • 当用户输入URL时,您希望他位于正确的选项卡上
  • 当用户在选项卡之间导航时,您希望URL根据用户的目的地进行更改
  • 将用户登录到正确的选项卡上 对于#1,您需要在方法
    onModuleLoad
    中管理到达您的应用程序的用户。请参阅这段代码以选择正确的选项卡

    public void onModuleLoad() {
        tabPanel = new TabPanel();
    
        tabPanel.add(new HTML("<h1>Page 0 Content: Llamas</h1>"), " Page 0 ");
        tabPanel.add(new HTML("<h1>Page 1 Content: Alpacas</h1>"), " Page 1 ");
        tabPanel.add(new HTML("<h1>Page 2 Content: Camels</h1>"), " Page 2 ");
    
        String hash = Window.Location.getHash();
        if (hash != null && hash.startsWith("#page")) {
            int tabIndex = Integer.parseInt(hash.substring(5));
            tabPanel.selectTab(tabIndex);
        } else {
            tabPanel.selectTab(0);
        }
        RootPanel.get().add(tabPanel);
    }
    
    模块加载()上的公共void{
    tabPanel=新的tabPanel();
    添加(新HTML(“第0页内容:Llamas”),“第0页”);
    tabPanel.add(新的HTML(“第1页内容:羊驼”),“第1页”);
    添加(新的HTML(“第2页内容:骆驼”),“第2页”);
    String hash=Window.Location.getHash();
    if(hash!=null&&hash.startsWith(“#page”)){
    int tabIndex=Integer.parseInt(hash.substring(5));
    tabPanel.selectTab(tabIndex);
    }否则{
    选项卡面板。选择选项卡(0);
    }
    RootPanel.get().add(tabPanel);
    }
    
    此代码

    管理导航历史记录 看。我上面的代码取自此页面,但在我的示例中,我删除了历史记录管理


    在这两种情况下,关键的概念都是基于url哈希找到正确的小部件并选择它。

    我可能误解了你的问题,如果是这样,我很抱歉。我曾经写过一个答案,描述了我如何使用MVP实现gwt应用程序。也许有一些想法你可以使用?在这里找到:你能澄清你的问题吗?您是否已经在使用MVP,但在如何区分不同的活动方面遇到了困难?