我有一个 Eclipse RAP 2.3 应用程序,它有两个入口点,比如说/first
和/second
. 在第一个入口点的 GUI 中,有一个按钮,我想用它在新的浏览器选项卡中打开第二个入口点。该按钮的事件处理程序当前是
UrlLauncher launcher = RWT.getClient().getService( UrlLauncher.class );
launcher.openURL( "/second");
当应用程序部署在 Tomcat Web 服务器中时,这已经不起作用myapp.war
(应该是/myapp/second
)。
我的问题:
- 确定要在事件处理程序中打开的 URL 的最佳方法是什么?
- 我是否必须获取
HttpServletRequest
,获取上下文路径以及一些字符串操作? - 这个时候打电话真的安全
RWT.getRequest()
吗?
更新
根据 Rüdiger 的评论,我可以通过两种不同的方式获取上下文路径。
第一种方法是
RWT.getRequest().getContextPath();
记录在哪里
RWT.getRequest()
不推荐这种方法
其次,我可以通过
ApplicationContextImpl ac = (ApplicationContextImpl) RWT.getApplicationContext(); String contextPath = ac.getServletContext().getContextPath();
IDE 显示警告的位置
不鼓励访问:由于所需库的限制,无法访问 ApplicationContextImpl 类型 ...\org.eclipse.rap.rwt_2.3.2.20150128-1013.jar
尽管有警告,但在将带有 OSGi 捆绑包的 WAR 文件部署到 Tomcat 时,它仍然有效。
因此,在这两种情况下都会出现某种警告,这使得解决方案看起来更像是变通方法。