2012-09-11 89 views
1

我們有一個具有多個入口點的應用程序。每個EntryPoint都包含一個帶有自己的PlaceHistoryHandler,PlaceHistoryMapper和PlaceController的MVP配置。根據歷史處理程序的配置順序,地點處理將重疊。我認爲問題是由於PlaceHistoryHandler的實現在PlaceHistoryMapper找不到地方時調用PlaceController.goTo(NOWHERE),因爲此地點與另一個EntryPoint的PlaceHistoryMapper關聯。我如何解決這個問題?使用多個入口點的MVP是正確的嗎?具有多個入口點的GWT MVP

更多信息

托馬斯,感謝您的澄清。我們的風景是一個服務器端OSGI應用程序,其中應用程序模塊是熱門部署的,包含它們自己的GWT視圖和入口點。 我們的主客戶端GWT應用程序有一個動態的側面菜單,超鏈接指向與在主區域中呈現視圖的外部入口點關聯的令牌。

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

解決此類應用程序的正確方法是什麼?

+0

你是如何設法重疊它們的?將用戶從一個入口點發送到另一個入口點會發生什麼? –

+0

簡短的回答:不要那樣做,那是行不通的;長回答:https://groups.google.com/d/topic/google-web-toolkit/ct5ogmBmXrM/discussion –

回答

0

你有兩個選擇:

(A)

不要使用PlaceController的側面菜單。使其成爲包含指向模塊中地點的鏈接的小部件。您可以在每個模塊中包含此小部件。當點擊菜單項時,整個頁面將重新加載。這樣瀏覽器的歷史將按預期工作。

(B)

如果你不能重組你的應用程序,可以考慮使用快速啓動/開始菜單的方式。您可以使用單個視圖創建主入口點,以顯示用戶可用的應用程序菜單。每個菜單項基本上都是指向相應模塊(入口點)的起始URL的鏈接。當用戶點擊它時,該模塊將加載並接管整個屏幕。我還會爲每個模塊添加一個圖標以返回到啓動板。

這樣用戶可以爲啓動板添加書籤,也可以直接爲任何模塊添加書籤。

請注意,在這種方式下,URL歷史記錄可以按預期工作,即如果用戶進入Launchpad - > A1 - > A2 - > Launchpad - > B1等,用戶可以點擊後退按鈕,退一步。

或者,每個模塊都可以在新的瀏覽器選項卡中打開。也許你可以給用戶一個選項,在首選項中選擇相同的選項卡或新的選項卡。

需要注意的是智能手機和平板電腦的所有用戶都熟悉的Launchpad /開始菜單的做法,這也是在Mac OS和,不久,Windows 8系統使用一個額外的好處是,每個模塊/應用程序有更多的屏幕空間工作用。