2012-02-17 26 views
2

我真的很努力與此 - 我已經檢查了所有其他堆棧溢出頁面,雖然這可能看起來像一個重複的問題有沒有其他答案,我可以找到任何地方除了可能使用多個模塊(即使這看起來不正確)GWT主頁登錄頁面到實際的應用程序示例重定向問題

我想要做的是有一組靜態頁面組成我的主頁,登錄頁面(我打算使用RequestFactory拉返回用戶權限以從這裏顯示應用程序的東西 - 有人在另一個帖子中建議這樣做,從「非GWT」頁面 - 這聽起來不正確),然後當用戶登錄他成功地獲得了針對實際應用程序的某些東西正在顯示基於他目前的燙髮issions。

現在,我已經實現了多個JSP測試項目使用Window.Location.replace(「...」)重定向,但我不知道如何實際填充我想要的特定頁面更換。

從1個GWT應用程序可以在靜態HTML文件(甚至是我不關心的JSP)中擁有一個完整的網頁,一個登錄頁面和實際的應用程序。

如果是這樣,你如何做到這一點?

我使用RootLayoutPanel.get()加載我的主應用程序 - 它如何知道實際使用哪個RootLayoutPanel - 我花了數小時與此戰鬥,並且很多教程/問題的答案都沒有就如何實際執行任何事情提供了很多深度。顯然有什麼我只是缺少

我想要做的事完全像在展示的例子:https://www.blueworkslive.com/#!gettingStarted:overview

如果您使用的鍍鉻和檢查標籤的每一個頁面上有說GWT 2.4,所以它的絕對不喜歡我遇到的一個答案:「不要使用GWT進行登錄」。這似乎應該是一件簡單的事情,我只是... ...沒有發現或者誠實地沒有從任何例子中得到。

這是接近我的項目的最後一步,任何幫助,將不勝感激。


我使用Apache四郎與GAE,物化爲一個數據庫和RequestFactory - 只有一個主要的HTML頁面和應用程序是簡單地調用getRootLayoutPanel加載應用程序。不確定是否有用。

實現頁面是不是隻是變向

回答

1

登陸GAE上的問題,通過谷歌帳戶或聯合登錄,您需要重定向用戶到登錄頁面。既然你運行GWT,通常只有一個頁面,你有兩個選擇:

  1. 執行正常重定向到登錄頁面 - 在這種情況下,瀏覽器會去到登錄頁面,你將失去GWT應用程序的狀態。登錄後,您可以重定向到GWT應用程序。如上所述 - GWT應用程序狀態將會丟失。這是簡單的方法。

  2. 打開子窗口或iframe中的登錄頁面。將目標網址設置爲關閉窗口的頁面(實際上它必須安裝一個JavaScript父鉤子,即目標頁面調用)。登錄完成後,目標頁面調用JS鉤子,它通知父頁面登錄過程結束,關閉子窗口/ iframe並繼續。這更復雜,一些登錄頁面不喜歡iframe(在OpenID登錄的情況下),但它保留了您的GWT應用程序狀態。

要回答你的問題:

是的,它可能有一個GWT項目多頁(GWT頁/模塊和靜態文件)。當然,當你瀏覽頁面時,你會失去應用狀態。只要在瀏覽器中加載頁面,GWT模塊只是「活動的」。

+0

脫離選項1 - 這聽起來是否正確(這是我現在正在實施 - 剛開始工作)。在登錄時,使用請求工廠驗證一個空用戶 - 失敗將重定向到主jsp - 主jsp將有一個鏈接到登錄jsp - 登錄jsp將有一個HttpServlet使用請求工廠進行登錄 - 如果登錄成功從servlet它將重定向到主應用程序 - 這是在所有邏輯或我的方式 - 我只是想知道之前,我去做這一切?謝謝 – 2012-02-18 00:47:56

+0

你不需要你自己的登錄頁面。主頁面上的登錄鏈接應該將您帶到Google登錄頁面。 Google登錄網址由'UserService.createLoginUrl'生成。 – 2012-02-18 02:33:32

+0

我看到你可以在GWT附帶的MobileWebAppExample中做到這一點 - 但這是唯一的問題..我正在努力的應用程序需要接受任何用戶,無論gmail帳戶 - 如果我做UserService.createLoginUrl不會這樣只允許用戶使用他們的Google帳戶登錄? ...我想我可能一直在做一些愚蠢的事情 - 我想我可以在GWT內部完成所有的jsp內容...我現在正在開發它 – 2012-02-18 04:14:54