2011-08-17 18 views
0

我有兩個問題:爲什麼GWT URL在事件或服務調用中不會改變?

問:1

我目前正在開發一個GWT應用程序。該應用程序的入口點是:ImageViewer.java。我可以很好地訪問http://127.0.0.1:8888/ImageViewer.html?gwt.codesvr=127.0.0.1:9997。我有一個稱爲「搜索」的服務,它具有相應的「Async」和「Impl」的定義。現在,我使用RPC從客戶端調用服務。我可以調用服務,獲得返回值。一切正常。

但是,我希望應用程序能夠顯示URL上的行爲變化。即當服務被訪問時,我認爲它會反映在瀏覽器的URL上,如:http://127.0.0.1:8888/search?gwt.codesvr=127.0.0.1:9997,因爲我修改了web.xml。但是,這種行爲沒有實現。爲什麼沒有反映出任何特定的原因?

問:2

這一個是先前疑問句的反向。即我有一個應用程序正在運行。假設它有一個入口點類(Imageviewer.java)和另一個複合類(searchClass.java),它將根據事件在Imageviewer上加載。這個searchClass調用上一個問題中提到的「搜索」服務。

我可以在「Imageviewer」中加載「searchClass」,調用服務,服務也返回所需的值。一切正常......但是,

我需要的是這樣的:通過只輸入這個查詢字符串:

http://127.0.0.1:8888/search?value=John

我希望「searchClass」對「圖像瀏覽器」被加載,通話該服務使用該值(在本例中爲「john」)並顯示結果。這可能嗎?

我試過了:我試圖在服務器上創建一個httpServletClass,並將它與URL進行映射並可以進行搜索。搜索返回適當的結果。但是,我希望服務器的結果顯示在客戶端上。請記住,我直接使用servlet來讀取URL,因此沒有值從客戶端傳遞到服務器。

在此先感謝。

回答

1
  1. RPC(AJAX)調用通過XHR完成,不改變瀏覽器的URL。

  2. 你不能(用你提供的URL)。 GWT應用程序通常運行在一個網頁中,即URL不會更改(請參閱gmail如何更改瀏覽器url欄)。你可以做的是啓用GWT history support。然後,您的網址將http://host/#search?value=queryu

+0

嗨Peter,GWT歷史支持鏈接已損壞。 – Ashok

+0

修復了鏈接.. –

1

答:1。要更改URL,哈希部分,你需要在History類設置新的歷史象徵。更多關於this article的歷史管理。

答:2.對於第二部分,您可以通過更改歷史記號來實現它,例如「http://127.0.0.1/search#value=John」。如果#部分更改,歷史記錄服務將觸發事件。如果你使用Window.Location,你也可以使用帶「?」的部分,如果你使用了Window.Location,但是它會導致應用程序重新加載,這將使得使用GWT的想法成爲問題。

相關問題