2016-05-02 28 views
0

因此,我有一個Spring-MVC RESTful後端,即跨域啓用。這是單元測試,我可以打電話給我的網絡服務,並找回正確的JSON。SmartGWT DataSource將QueryString添加到REST調用

我有一個SmartGWT 5.1p和GWT 2.7.0前端應用程序,在SuperDev模式或經典開發模式下工作得很好,或者很好。當我這樣做時,我使用帶有GWT插件的舊版Firefox 24瀏覽器,並且我可以看到我的應用程序工作得很好。我的數據源與RESTful Web服務綁定,我可以通過我的DataSources創建,檢索,更新和刪除記錄。

我可以通過Maven編譯整個應用程序,並獲得創建的WAR很好。我試着將這個WAR移動到tomcat服務器上,並正確部署。我可以看到在tomcat中運行的應用程序在日誌中沒有錯誤。

然後,當我進入第一頁時,應用程序出現正常且沒有錯誤。我做的第一件事就是將一個用戶名和密碼添加到表單中,然後它應該調用綁定到LoginCOntroller或登錄Web服務的LoginDataSource。

我可以從螢火蟲看到的是,當我把我的電話,而不僅僅是打電話:

http://mydomain:8080/admin/login/user/myusername/pwd/mypassword

我得到:

http://mydomain:8080/admin/login/user/myusername/pwd/mypassword?0 {並在此之後整個洛塔東西)。 ..我猜想的查詢字符串。

當我點擊提交按鈕,我得到一個SERVER TRANSPORT錯誤,就是這樣,我沒有得到任何更多的信息。除了OPTIONS和GET在密碼之後添加了大量的查詢字符串廢話之外,沒有其他東西可以從firebug報告。

我可以看看tomcat的日誌,我看不出有任何錯誤。我甚至沒有看到網絡服務的URL調用。

任何幫助,將不勝感激。我一直在處理SmartGWT多年,並轉向後端開發一段時間,而不是我試圖讓我的SmartGWT前端工作。但是,對於現在發生的事情,我有點生疏。

謝謝!

+0

你可以添加你的'LoginDataSource'的源代碼嗎? – mam10eks

+0

你可以添加控制器的代碼和提交嗎? –

回答

0

問題不在querystring,它是我在數據源中的舊基礎url。每個數據源中都有一個方法:getServiceRoot

在getServiceRoot中,我使用了硬編碼的「localhost:8080」,它在客戶端代碼中不起作用。這意味着無論誰在瀏覽器中運行應用程序,「本地主機」意味着他們的機器。所以,我必須更改getServiceRoot來執行以下操作:

protected String getServiceRoot() 
{ 
    String baseUrl = "http://" + Window.Location.getHostName(); 
    return baseUrl + UrlConstants.SOME_URL_REST_ENDPOINT; 
} 

由於我在同一臺計算機上有兩個WAR, 一個WAR是Spring MVC的後端RESTful網絡服務 的其他戰爭是前端,SmartGWT的客戶端應用程序

這是我碰到...一個問題,我以爲只是因爲雙方都在同機器,那到前端,只需調用localhost上的代碼,因爲它在那裏。但對瀏覽器來說,這可能是任何其他機器。

我想我可能只是硬編碼運行tomcat的機器的公共IP地址,然後客戶端SmartGWT肯定會找到RESTful Web服務。或者,我可以使用Spring Env Profile來實現這一點。但是我所做的代碼更改應該可以工作,只要兩個WAR都在同一臺機器上。

我只記得瀏覽器中的客戶端代碼與瀏覽器運行的機器相關。

所以,這是固定的。如果有人需要澄清,請告訴我。

相關問題