具有多个EntryPoints的GWT MVP

时间:2012-09-11 23:22:27

标签: gwt mvp

我们有一个包含多个EntryPoints的应用程序。每个EntryPoint都包含一个带有自己的PlaceHistoryHandler,PlaceHistoryMapper和PlaceController的MVP配置。根据历史处理程序的配置顺序,位置处理重叠。我认为问题是因为PlaceHistoryHandler的实现在PlaceHistoryMapper找不到该位置时调用PlaceController.goTo(NOWHERE),因为这个位置与另一个EntryPoint的PlaceHistoryMapper相关联。我怎么能解决这个问题?将MVP与多个EntryPoints一起使用是对的吗?

更多信息

托马斯,谢谢你的澄清。我们的场景是服务器端OSGI应用程序,其中应用程序模块是热部署的,包含自己的GWT视图和EntryPoints。 我们的主客户端GWT应用程序有一个动态的侧面菜单,超链接指向与外部EntryPoints相关联的标记,这些标记具有在主区域中呈现的视图。

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

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

1 个答案:

答案 0 :(得分:0)

您有两种选择:

(A)

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

(B)

如果您无法重构应用,请考虑使用Launchpad / Start Menu方法。您可以使用单个视图创建主入口点,以显示用户可用的精美应用菜单。每个菜单项基本上是指向相应模块(入口点)的起始URL的链接。当用户点击它时,该模块加载并接管整个屏幕。我还会为每个模块添加一个图标以返回到启动板。

这样用户可以为启动板添加书签,也可以直接为任何模块添加书签。

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

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

请注意,智能手机和平板电脑的所有用户都熟悉Launchpad / Start Menu方法,该方法也适用于Mac OS和Windows 8。另外一个好处是每个模块/应用都有更多的屏幕空间可供使用