如何从另一个Eclipse RAP入口点访问一个Eclipse RAP入口点?
我有一个EclipseRAP2.3应用程序,它有两个入口点,比如如何从另一个Eclipse RAP入口点访问一个Eclipse RAP入口点?,eclipse,eclipse-rap,Eclipse,Eclipse Rap,我有一个EclipseRAP2.3应用程序,它有两个入口点,比如/first和/second。 在第一个入口点的GUI中,有一个按钮,我想用它在新的浏览器选项卡中打开第二个入口点。该按钮的事件处理程序当前为 urlauncher-launcher=RWT.getClient().getService(urlauncher.class); openURL(“/秒”); 当应用程序在Tomcat web服务器中部署为myapp.war时(应该是/myapp/second),这就不起作用了 我的问题
/first
和/second
。
在第一个入口点的GUI中,有一个按钮,我想用它在新的浏览器选项卡中打开第二个入口点。该按钮的事件处理程序当前为
urlauncher-launcher=RWT.getClient().getService(urlauncher.class);
openURL(“/秒”);
当应用程序在Tomcat web服务器中部署为myapp.war
时(应该是/myapp/second
),这就不起作用了
我的问题是:
- 确定要在事件处理程序中打开的URL的最佳方法是什么
- 我是否必须获取
、获取上下文路径以及一些字符串操作HttpServletRequest
- 此时调用
是否确实安全李>RWT.getRequest()
更新 根据Rüdiger的评论,我可以通过两种不同的方式获得上下文路径
RWT.getRequest().getContextPath();
其中RWT.getRequest()
不建议使用此方法
ApplicationContextImpl ac=(ApplicationContextImpl)RWT.getApplicationContext();
字符串contextPath=ac.getServletContext().getContextPath();
IDE显示警告的位置
不鼓励访问:由于所需库的限制,类型ApplicationContextImpl无法访问…\org.eclipse.rap.rwt_2.3.2.20150128-1013.jar
尽管有警告,但在将带有OSGi捆绑包的WAR文件部署到Tomcat时,它仍然有效RWT.getRequest()不建议使用
,因为通常RWT会保护您不受较低级别的servlet API的影响,与请求的某些直接交互甚至会干扰RWT的生命周期并产生有趣的响应
在您的情况下,通过RWT.getRequest()
访问ServletContext
是安全的,但我建议使用
RWT.getUISession( display ).getHttpSession().getServletContext();
访问servlet上下文
第二种方法访问不属于公共API的内部类,因此不应使用这些类。访问的类将来可能会更改或(重新)移动,恕不另行通知并中断您的应用程序。可以从servlet上下文“ServletContext#getContextPath()”获取上下文路径(在您的情况下为myapp)。不确定还有什么遗漏,或者这样一个相对URL是否有效。我已经用你建议的代码示例更新了线程。但我仍然想知道最好的办法是什么。