0

在我的 GWT 和 AppEngine 项目中,我Servlet使用以下内容转发了一个 JSP:

req.getRequestDispatcher("/index.jsp").forward(req, resp);

该 JSP 包含一个 GWT 编译的 Javascript 参考。

问题是即使页面加载正常,GWT Javascript 也不会运行。我假设这是因为新加载的文件不包含?gwt.codesvr=127.0.0.1:9997GWT 插件通常存在的部分。

有没有办法让这个工作?

编辑:根据到目前为止的答案,我想我应该提到它在 Web 模式下工作得非常好。此外,基本 URL 直接映射到 my 中的 Servlet,Web.xml因此我访问 Servlethttp://127.0.0.1:8888/而不是建议的 URLhttp://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997

4

3 回答 3

2

?gwt.codesvr=文件仅在客户端使用来*.nocache.js触发加载 ofhosted.html而不是 some *.cache.html,因此它必须存在于 URL 中以触发 DevMode,而与服务器端可以执行的操作无关。

如果您的主机页面位于http://127.0.0.1:8888/,则使用http://127.0.0.1:8888/?gwt.codesvr=127.0.0.1:9997.

于 2012-07-15T09:02:18.663 回答
0

使用 RequestDispatcher 转发不应更改浏览器中的 URL。如果您gwt.codesvr在浏览器 URL 中看到该参数,则 GWT 插件应该能够找到它。所以问题可能出在其他地方。可以肯定的是,您可以暂时将 URL 参数附加到转发呼叫,例如:

req.getRequestDispatcher("/index.jsp?gwt.codesvr=127.0.0.1:9997").forward(req, resp);

如果它仍然不起作用,请确保*.nocache.js相对于主机页面正确解析的路径。它在网络模式下工作吗?

于 2012-07-15T01:41:19.813 回答
0

在你的servlet中,你为什么不检查请求是否是本地的。

String url = request.getRequestURL().toString();

如果 url 包含http://127.0.0.1:8888或者你在哪里运行它,你可以附加"/index.jsp?gwt.codesvr=127.0.0.1:9997". 如果没有,你可以离开它。

然后,您也可以在那里部署和测试代码,而无需更改代码!

于 2012-07-15T01:54:45.947 回答