2011-11-08 65 views
2

我使用RequestBuilder從GWT客戶端代碼調用servlet。如何在GWT中傳遞「帶參數的url」作爲url參數

在請求(POST)我傳遞一些請求數據

builder.sendRequest(POSTDATA,新RequestCallback()....

在POSTDATA我有一個名爲的URL參數「returnToUrl 「

這種 」returnToUrl「 具有URL的參數,並且會是這樣

returnToUrl = "http://my.server/add?pn=a&pd=b"; 

當我將它傳遞給servlet,第二(或更高版本)PARAMET ers(pd = b,在我的例子中)被解釋爲servlet的請求參數,而不是作爲returnToUrl參數的一部分,因此會丟失....

它被URL編碼,但當然, t改變'?'和'&'字符。

任何幫助非常感謝!

+0

這取決於您對URL編碼的定義。例如,JavaScript提供了兩種方法:encodeURI(僅對非法URI字符進行編碼)和encodeURIComponent(將字符串編碼爲可用作參數的東西)。 – Neil

+0

我在GWT中使用了URL.encode(),它對應於你的第一個例子。是否有encodeURIComponent的GWT類/綁定?如果沒有,我會寫一個JSNI來做到這一點...... –

回答

4

你需要在GWT中編碼你的數據。

看看URL類要做到這一點: http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/http/client/URL.html

escpecially在encodeQueryString基本上具有相同的行爲在JavaScript encodeURIComponent方法。

+0

優秀的,這是有效的。謝謝丹尼爾。我*認爲*我正在查看URL的舊版Javadoc。無論哪種方式,我沒有看到這種方法,這是一個救生員...再次感謝。 –