2016-05-02 27 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都在同一台机器上。

我只记得浏览器中的客户端代码与浏览器运行的机器相关。

所以,这是固定的。如果有人需要澄清,请告诉我。

相关问题