2013-07-28 52 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