如何实现GWT多页

如何实现GWT多页,gwt,Gwt,如何使用GWT实现多页,以便GWT应用程序可以有多个映射到html的入口点 像映射到home.html的HomeEntryPoint和 edientrypoint映射到edit.html等。这样就可以通过如下URL访问入口点:http://localhost:8080/home.html或http://localhost:8080/edit.html 现在我正在使用,但我认为它不再被维护。还有一些问题我现在无法解决 这样做意味着你的应用程序将不得不在下一页加载时重新启动-如果你同意,那么 有几种

如何使用GWT实现多页,以便GWT应用程序可以有多个映射到html的
入口点

像映射到
home.html
HomeEntryPoint
edientrypoint
映射到
edit.html
等。这样就可以通过如下URL访问入口点:
http://localhost:8080/home.html
http://localhost:8080/edit.html

现在我正在使用,但我认为它不再被维护。还有一些问题我现在无法解决


这样做意味着你的应用程序将不得不在下一页加载时重新启动-如果你同意,那么

有几种方法可以做到这一点。最快/最简单的方法是列出模块文件中的所有入口点,并在每个
onModuleLoad
的顶部检查它是否在正确的页面上。类似(当然是为每个页面/入口点定制的):

GWT将把所有入口点(以及所有依赖的类,只生成一组文件,每个类只下载一次)编译成一个js文件,所有入口点都将运行,但如果它们不应该在那个时候运行,它们将自行停止

进一步的一步是将其更改为在每个入口点上使用注释,并为所有入口点使用生成器(您知道您的入口点实例是使用GWT.create创建的吗?这是真的!),这将覆盖模块加载上的
onModuleLoad
,并自动添加此逻辑


编辑为使用getPath()代替getHref(),并使用小写()字符串以确保不会出现任何大小写问题

getHref()是一个聪明的解决方案,所以我将把entrypoint类条目和module.gwt.xml文件放在我的代码中?等等,顺便说一句,因为检查是用endsWith(“something.html”)进行的,这将在片段标识符和URL参数方面出现问题,对吗?很好,很抱歉我错过了这一点。。。现在将其更正为使用window.location.pathname(gwt中的location.getPath())我尝试了这种方法,但应用程序在访问主html“app.html”之外的内容时抛出了一个错误。就像user.html导致“RequestURI=/user.html”是的,这肯定是最终的解决方案,但现在对于我的原型,我只需要将所有东西放在一个地方。使用单独的模块与“所有东西都放在一个地方”如何不兼容?只需将多个模块名传递给DevMode或编译器,而不是只传递一个模块名;如果您使用的是Google Eclipse插件的话,那么这就非常容易了。只有一个模块的一个优点是,用户只需等待一次大的下载,特别是如果应用程序的不同部分有一些重叠的话——仅使用Widget类及其依赖项就可以下载大约45k,当然,更大的类意味着需要拉更多的js。但是,使用几个HTML主机页有什么好处呢?
 if (!Window.Location.getPath().toLowerCase().endsWith("myhtmlpage.html") {
   return;
 }