2009-09-24 24 views
3

我想支持在我的GWT應用程序中鏈接url請求參數。例如處理請求參數後的GWT更改URL

http://host/app?action=A&p1=v1&p2=v2

我能夠處理行動= A &其他參數,可以,但一旦我做完這些,我想改變URL刪除它們。

問題是,一旦用戶訪問網頁,爲了完成參數p1 & p2的「動作」,他可以瀏覽該網站,並回到同一頁面以獲得相同的「動作」,但具有不同的參數p1,p2的值。第二次,雖然,我真的不想處理p2 & p2的舊值。

我檢查了Window.Location.replace(),但它重新加載頁面,並且所有的應用程序狀態都丟失了。

有沒有辦法做到這一點,沒有params完全重新加載頁面?也許通過「刪除」查詢參數?

任何其他更明智的方式來實現這一目標?

+0

正如我完成打字,我看到一種可能的方法。 跟蹤請求是否在應用程序狀態中處理,然後不在隨後的時間再次處理。但網址仍然會保持我猜。 – Vish 2009-09-24 12:50:04

回答

3

您是否嘗試過History類?你可以聽ValueChangeEvent,解析那裏的參數(url的格式會有所變化,但這不應該是一個問題),然後你可以用History.newItem("something/maybeNull")History.newItem("something/maybeNull", false)「清理」當前頁面的url if您希望防止事件發生。

0

每個Igro的建議的歷史是如果你可以走的路。如果在甚至可以向某人顯示將要託管GWT的頁面之前,您必須處理服務器上的信息,那麼您可以使用servlet或您正在使用的任何服務器端技術來處理它們,併發送304以重定向用戶訪問URL中沒有獲得參數的頁面。你也可以使用POST而不是GET,但這也很糟糕(取決於你在做什麼)。如果可能的話,肯定會嘗試使用歷史記錄系統。