2013-07-28 49 views
0

我想在这里编码输入表单数据。有两种选择,我已经尝试过他们俩:“你忘记继承所需的模块”替代编码URL

  1. 使用URLencoder.encode(inputString)方法,该方法不会对GWT客户端的工作(我的代码位于客户模块中)导致错误
  2. URL.encodeQueryString(inputString)效果很好,但是当我运行使用JUnit相关的测试情况下,我得到的是unsatisfiedlinkederror

是否有编码方法的任何替代方案或有任何变通上面提到的方法呢?

回答

0

对于URL的建筑,我用的是 “UrlBuilder”:com.google.gwt.http.client.UrlBuilder

UrlBuilder u = new UrlBuilder(); 
u.setProtocol("https"); 
u.setHost("www.mysite.com:8080"); 
u.setPath("/myServletPath"); 
u.setParameter("username", nameField.getValue()); 
u.setParameter("someAttribute", "itsValue"); 
u.buildString(); 

此代码将导致: https://www.mysite.com:8080/myServlet?username=GWT%20User&someAttribute=itsValue

+0

似乎UrlBuilder在内部使用URL.encodeQueryString()来编码给定的字符串。当我尝试使用它时,它抛出了同样的错误'UnsatisfiedLinkError由于URL.EncodeImpl' – Jayesh

+0

您好@Jayesh,'com.google.gwt.http.client.UrlBuilder'用于GWT的客户端。我也在我的GWT项目的客户端中使用它,并且可以确认它的工作原理。 [我做了一些研究](https://groups.google.com/d/topic/google-web-toolkit/TtO-22bN7dA/discussion),看起来'UnsatisfiedLinkError'发生在你从服务器端调用它的时候。请查看有关错误的堆栈跟踪,并确保它未从服务器端调用。 – Churro

+0

问题是我使用此函数的模块之一驻留在服务器端。这就是我无法从客户端转换到服务器端的原因。与Java所提供的URLEncoder.encode()函数一样。它建立在服务器端工作。当我在客户端使用这个功能时,它说'你忘了继承所需的模块吗?'尽管我在* .gwt.xml文件中添加了所有必需的依赖关系。 – Jayesh