2011-05-12 110 views
6

我有一個多頁應用程序,需要手動從一個頁面切換到另一個頁面。它可以在GWT中完成,因爲它是針對單頁面應用程序的。我正在從Google代碼和在線論壇中學習,但找不到任何具有多個未通過共同入口點鏈接的多頁面的應用程序。有任何想法嗎?gwt多頁應用程序

回答

9

GWT通過URL fragment identifier(FI),即http://www.yourhost.vom/main#pagename支持應用程序內的「頁面」,其中「pagename」是表示應用程序中「頁面」的片段標識符。

這個「頁面」(請注意,瀏覽器從不真正重新加載頁面,所以GWT應用程序保持不變),具有完整的歷史記錄支持並且可加入書籤。

注意:貫穿GWT docs片段標識符有時被稱爲地方標記或歷史標記。

  1. 通過添加iframe來你的主頁啓用history support

    <iframe src="javascript:''" 
         id="__gwt_historyFrame" 
         style="width:0;height:0;border:0"> 
    </iframe> 
    
  2. 註冊一個ValueChangeHandler通知FI(頁)更改時:History.addValueChangeHandler(..)。在這個處理程序中,您放置了一個顯示新頁面的邏輯。

  3. 轉到通過調用History.newItem("newpage")(沒有#)的特定頁面

  4. 可以甚至通過「參數」頁面,通過將片段標識符成子部分:例如「#編輯/ USER4」。只需解析此FI,調用顯示編輯頁面的代碼並將「user4」傳遞給它。您可以使用任何字符將FI分成「頁面」部分和「參數」部分(我在此使用「/」)。在現實生活中看到這一點:在Gmail中打開郵件並查看URL。

+0

該多頁應用程序的任何示例。你將如何在gwt中實現一個普通的或者只製作靜態頁面而不需要參數解析 – user477469 2011-05-12 22:25:34

+0

GWT應用中沒有靜態頁面。您可以在服務器上創建一個,但這意味着要離開GWT應用程序。一個普通的錨點是這樣完成的:',你在代碼中處理「page2」並顯示你想要的東西。 – 2011-05-13 06:44:29