2011-11-08 68 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。无论哪种方式,我没有看到这种方法,这是一个救生员...再次感谢。 –