GWT获取应用程序的路径

时间:2012-08-31 04:57:24

标签: java gwt

我有一个GWT应用程序,当我在运行应用程序后部署本地主页时是localhost:8888 / myapp.html但是当我们将它部署到服务器时,运行其主页的应用程序是107.20.239.198:8080/myapp/ myapp.html。

现在我的应用程序失败的所有相关路径。我需要确切路径的地方,我无法得到它。现在路径不同了。例如,当我点击我的应用程序中的特定小部件时 - >它重定向到路径'/#+'地方no.1“+”地方no.2“'

但是现在它在服务器上部署时失败了,因为它现在需要路径 - > '/ myapp /#+“地方1号”+“地方2号”'。

那么我怎样才能使它成为通用的,这样我才能处理这两种情况。

任何人都可以帮我吗?

P.S。我希望我能够很好地表达我的问题,否则你可以对它进行评论,以便我能更好地解释它。

3 个答案:

答案 0 :(得分:5)

如上所述,您可以在AppEngine的服务器上运行本地网址。最好先在本地Tomcat上部署您的应用程序。并确保一切正常。这些是您在应用程序启动时可以用来获取relative/absolute urls的几种方法。

GWT.getHostPageBaseURL(); GWT.getModuleBaseURL(); GWT.getModuleName();

希望它有所帮助。

答案 1 :(得分:1)

相对于您的上下文,您应该在应用程序中使用相对路径。使用request.getContextPath(),您将能够获得正确的上下文路径。但是如果你在代码中使用“/”,你将始终引用你的上下文路径,无论上下文是什么。因此,要创建指向内部页面的链接,您将使用/internal.html。在您的本地计算机上将转换为localhost:8888 / internal.html但在服务器上它将是:107.20.239.198:8080 / myapp / internal.html。

答案 2 :(得分:1)

正如@Anuj Kulkarni所提到的,你应该使用相对路径,否则你总是会遇到这些问题。但我有一个特殊的问题,我无法做到这一点。所以,如果你愿意,你可以使用:

if (!GWT.isProdMode())

您可以在此处为开发环境和部署定义不同的URL。 但是如果你在代码中多次使用它,那么它确实意味着你做错了。