在我的GWT和AppEngine项目中,我使用以下内容在Servlet
中转发JSP:
req.getRequestDispatcher("/index.jsp").forward(req, resp);
JSP包含GWT编译的Javascript引用。
问题是即使页面加载正常,GWT Javascript也不会运行。我假设这是因为新加载的文件不包含通常与GWT插件一起使用的?gwt.codesvr=127.0.0.1:9997
部分。
有没有办法让这个工作?
编辑:根据目前为止的答案,我想我应该提一下,它在Web模式下运行得非常好。此外,基本URL直接映射到Web.xml
中的Servlet,因此我在http://127.0.0.1:8888/
访问Servlet,而不是http://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997
答案 0 :(得分:2)
?gwt.codesvr=
仅在*.nocache.js
文件的客户端使用,以触发hosted.html
而非某些*.cache.html
的加载,因此必须存在在URL中触发DevMode,与服务器端无关。
如果您的主页位于http://127.0.0.1:8888/
,请使用http://127.0.0.1:8888/?gwt.codesvr=127.0.0.1:9997
。
答案 1 :(得分:0)
使用RequestDispatcher进行转发不应更改浏览器中的URL。如果您在浏览器URL中看到gwt.codesvr
参数,则GWT插件应该能够找到它。所以问题可能在其他地方。可以肯定的是,您可以暂时将URL参数附加到转发呼叫,例如:
req.getRequestDispatcher("/index.jsp?gwt.codesvr=127.0.0.1:9997").forward(req, resp);
如果仍然无效,请确保*.nocache.js
的路径相对于主页正确解析。它是否在Web模式下工作?
答案 2 :(得分:0)
在您的servlet中,为什么不检查请求是否是本地请求。
String url = request.getRequestURL().toString();
如果网址包含http://127.0.0.1:8888
或您正在运行它的位置,则可以附加"/index.jsp?gwt.codesvr=127.0.0.1:9997"
。
如果没有,你可以保留它。
然后您可以在那里部署和测试代码,而无需更改代码!