1

我们有一个具有多个入口点的应用程序。每个 EntryPoint 都包含一个 MVP 配置,其中包含自己的 PlaceHistoryHandler、PlaceHistoryMapper 和 PlaceController。根据配置历史处理程序的顺序,位置处理是重叠的。我认为问题是因为 PlaceHistoryHandler 的实现在 PlaceHistoryMapper 找不到地点时调用 PlaceController.goTo(NOWHERE) 引起的,因为这个地点与另一个入口点的 PlaceHistoryMapper 相关联。我该如何解决这个问题?将 MVP 与多个 EntryPoints 一起使用是否正确?

更多信息

托马斯,感谢您的澄清。我们的风景是一个服务器端的 OSGI 应用程序,其中应用程序模块是热部署的,并且包含它们自己的 GWT 视图和入口点。我们的主客户端 GWT 应用程序有一个动态侧边菜单,其中的超链接指向与在主区域中呈现视图的外部 EntryPoints 相关联的令牌。

  SIDE MENU
      |
      V
  -------------------------------------------
  |  A1  |                                  |
  |------|                                  |
  |  A2  |                                  |
  |------|                                  |
  |  B1  |                                  |
  |------|         MAIN REGION              |
  |  B2  |                                  |
  |------|                                  |
  |  C1  |                                  |
  |------|                                  |
  |  C2  |                                  |
  -------------------------------------------

解决此类应用程序的正确方法是什么?

4

1 回答 1

0

你有两个选择:

(一个)

不要将 PlaceController 用于侧边菜单。使其成为一个小部件,其中包含指向模块中位置的链接。您可以在每个模块中包含此小部件。单击菜单项时,将重新加载整个页面。这样浏览器历史记录将按预期工作。

(乙)

如果您无法重组您的应用程序,请考虑使用启动板/开始菜单方法。您使用单个视图创建主入口点,该视图显示用户可用的应用程序的漂亮菜单。每个菜单项基本上都是指向相应模块(入口点)的起始 URL 的链接。当用户点击它时,这个模块会加载并占据整个屏幕。我还将为每个模块添加一个图标以返回启动板。

通过这种方式,用户可以为启动板添加书签,也可以直接为任何模块添加书签。

请注意,在这种方法中,URL 历史记录将按预期工作,即如果用户进入 Launchpad -> A1 -> A2 -> Launchpad -> B1 等,用户可以点击后退按钮,浏览器将后退一步。

或者,每个模块都可以在新的浏览器选项卡中打开。也许您可以让用户在首选项中的某处选择相同的选项卡或新选项卡。

请注意,智能手机和平板电脑的所有用户都熟悉 Launchpad/开始菜单方法,Mac OS 以及很快的 Windows 8 也使用了该方法。另一个好处是每个模块/应用程序都有更多的屏幕空间可以使用。

于 2012-09-12T12:24:42.633 回答