我正在尝试通过以下方式启动 SuperDevMode。我修改了我的index.jsp
页面以将可配置的前缀附加到.nocache.js
文件中。生产配置包含一个空前缀,而开发配置包含类似http://localhost:9876
. 然后我在 Tomcat 上启动服务器并输入localhost:8080
. GWT 正常启动,但是当它尝试发送 RPC 请求时,它失败了,因为请求转到localhost:9876
而不是localhost:8080
. 如何自定义 RPC 应该使用哪个主机发送请求?
问问题
300 次
1 回答
1
我花了一些时间用 Eclipse 和调试器深入研究 GWT 代码,发现 GWT RPC 将结果GWT.getModuleBaseURL()
与@RemoteServiceRelativePath
. 这是该getModuleBaseURL
方法的代码:
public static native String getModuleBaseURL() /*-{
// Check to see if DevModeRedirectHook has set an alternate value.
// The key should match DevModeRedirectHook.js.
var key = "__gwtDevModeHook:" + $moduleName + ":moduleBase";
var global = $wnd || self;
return global[key] || $moduleBase;
}-*/;
我还检查dev_mode_on.js
并发现了几次出现__gwtDevModeHook
,但没有一个包含moduleBase
. dev_mode_on.js
还将其所有钩子安装到sessionStorage
, 同时读取getModuleBaseURL
($wnd
我使用调试器并确信$wnd
= window
)。
所以我使用了以下解决方案,它对我有用。我只是将以下内容添加到我的index.jsp
:
<c:if test="${not empty gwtScriptPrefix}">
<script type="text/javascript">
window["__gwtDevModeHook:MYAPP:moduleBase"] = "MYAPP/";
</script>
</c:if>
就在之前
<script type="text/javascript"
src="${gwtScriptPrefix}MYAPP/MYAPP.nocache.js">
</script>
其中gwtScriptPrefix
属性由 计算System.getProperty
,对应的系统属性设置localhost:9876/
在 Eclipse 运行配置上。
于 2014-05-23T13:24:27.890 回答