SmartGWT 数据源将 QueryString 添加到 REST 调用
SmartGWT DataSource adding QueryString to REST call
所以,我有一个支持跨域的 Spring-MVC RESTful 后端。它经过单元测试,我可以调用我的网络服务并取回正确的 JSON.
我有一个 SmartGWT 5.1p 和 GWT 2.7.0 前端应用程序,它们在 SuperDev 模式或 Classic Dev Mode 中运行良好,两者都运行良好。当我这样做时,我使用的是带有 GWT 插件的旧版 Firefox 24 浏览器,我可以看到我的应用程序运行得非常好。我的数据源绑定到 RESTful 网络服务,我可以通过我的数据源创建、检索、更新和删除记录。
我可以通过 Maven 编译整个应用程序,并创建一个 WAR 就好了。我尝试将此 WAR 移至 tomcat 服务器,并且它部署正确。我可以在 tomcat 中看到应用程序 运行,日志中没有任何错误。
然后当我转到第一页时,应用程序正常启动,没有错误。我做的第一件事是将用户名和密码添加到表单中,然后它应该调用绑定到 LoginCONtroller 或登录 Web 服务的 LoginDataSource。
我从 firebug 中看到的是,当我打电话时,而不仅仅是打电话:
http://mydomain:8080/admin/login/user/myusername/pwd/mypassword
我得到:
http://mydomain:8080/admin/login/user/myusername/pwd/mypassword?0{以及此后的一大堆东西)...我假设的查询字符串。
当我点击“提交”按钮时,出现服务器传输错误,仅此而已,我没有得到更多信息。 firebug 除了 OPTIONS 和 GET 在密码后添加一大堆无意义的查询字符串外,没有其他可报告的内容。
我可以查看 tomcat 日志,但根本看不到任何错误。我什至没有看到对网络服务的 URL 调用。
如有任何帮助,我们将不胜感激。多年来,我一直在处理 SmartGWT,并切换到后端开发一段时间,而不是我试图让我的 SmartGWT 前端工作。但是,我对现在发生的事情有点生疏。
谢谢!
问题不在于查询字符串,而是我在数据源中的旧基础 url。每个数据源中都有一个方法叫做:getServiceRoot
在 getServiceRoot 中,我使用的是硬编码 "localhost:8080",它在客户端代码中不起作用。这意味着无论谁在他们的浏览器中 运行 安装该应用程序,"localhost" 都意味着他们的机器。因此,我不得不更改 getServiceRoot 以执行以下操作:
protected String getServiceRoot()
{
String baseUrl = "http://" + Window.Location.getHostName();
return baseUrl + UrlConstants.SOME_URL_REST_ENDPOINT;
}
因为我在同一台机器上有两个 WAR;
一个 WAR 是一个 Spring MVC 后端 RESTful 网络服务
另一个WAR是前端,SmartGWT客户端应用程序
这是我 运行 遇到的一个问题...我认为只是因为两者都在同一台机器上,对于前端来说,只需调用本地主机上的代码,因为它就在那里。但对于浏览器来说,那可能是任何其他机器。
我想我可以硬编码 public 机器的 IP 地址 运行ning tomcat,然后客户端 SmartGWT 肯定会找到 RESTful 网络服务。或者,我也可以使用 Spring 环境配置文件来实现这一点。但是我所做的代码更改应该可以工作,前提是 WARS 在同一台机器上。
我只记得浏览器中的客户端代码与浏览器 运行 所在的机器相关。
所以,这是固定的。如果有人需要任何说明,请告诉我。
所以,我有一个支持跨域的 Spring-MVC RESTful 后端。它经过单元测试,我可以调用我的网络服务并取回正确的 JSON.
我有一个 SmartGWT 5.1p 和 GWT 2.7.0 前端应用程序,它们在 SuperDev 模式或 Classic Dev Mode 中运行良好,两者都运行良好。当我这样做时,我使用的是带有 GWT 插件的旧版 Firefox 24 浏览器,我可以看到我的应用程序运行得非常好。我的数据源绑定到 RESTful 网络服务,我可以通过我的数据源创建、检索、更新和删除记录。
我可以通过 Maven 编译整个应用程序,并创建一个 WAR 就好了。我尝试将此 WAR 移至 tomcat 服务器,并且它部署正确。我可以在 tomcat 中看到应用程序 运行,日志中没有任何错误。
然后当我转到第一页时,应用程序正常启动,没有错误。我做的第一件事是将用户名和密码添加到表单中,然后它应该调用绑定到 LoginCONtroller 或登录 Web 服务的 LoginDataSource。
我从 firebug 中看到的是,当我打电话时,而不仅仅是打电话:
http://mydomain:8080/admin/login/user/myusername/pwd/mypassword
我得到:
http://mydomain:8080/admin/login/user/myusername/pwd/mypassword?0{以及此后的一大堆东西)...我假设的查询字符串。
当我点击“提交”按钮时,出现服务器传输错误,仅此而已,我没有得到更多信息。 firebug 除了 OPTIONS 和 GET 在密码后添加一大堆无意义的查询字符串外,没有其他可报告的内容。
我可以查看 tomcat 日志,但根本看不到任何错误。我什至没有看到对网络服务的 URL 调用。
如有任何帮助,我们将不胜感激。多年来,我一直在处理 SmartGWT,并切换到后端开发一段时间,而不是我试图让我的 SmartGWT 前端工作。但是,我对现在发生的事情有点生疏。
谢谢!
问题不在于查询字符串,而是我在数据源中的旧基础 url。每个数据源中都有一个方法叫做:getServiceRoot
在 getServiceRoot 中,我使用的是硬编码 "localhost:8080",它在客户端代码中不起作用。这意味着无论谁在他们的浏览器中 运行 安装该应用程序,"localhost" 都意味着他们的机器。因此,我不得不更改 getServiceRoot 以执行以下操作:
protected String getServiceRoot()
{
String baseUrl = "http://" + Window.Location.getHostName();
return baseUrl + UrlConstants.SOME_URL_REST_ENDPOINT;
}
因为我在同一台机器上有两个 WAR; 一个 WAR 是一个 Spring MVC 后端 RESTful 网络服务 另一个WAR是前端,SmartGWT客户端应用程序
这是我 运行 遇到的一个问题...我认为只是因为两者都在同一台机器上,对于前端来说,只需调用本地主机上的代码,因为它就在那里。但对于浏览器来说,那可能是任何其他机器。
我想我可以硬编码 public 机器的 IP 地址 运行ning tomcat,然后客户端 SmartGWT 肯定会找到 RESTful 网络服务。或者,我也可以使用 Spring 环境配置文件来实现这一点。但是我所做的代码更改应该可以工作,前提是 WARS 在同一台机器上。
我只记得浏览器中的客户端代码与浏览器 运行 所在的机器相关。
所以,这是固定的。如果有人需要任何说明,请告诉我。