GWT 多个 html 页面和导航

Posted

技术标签:

【中文标题】GWT 多个 html 页面和导航【英文标题】:GWT Multiple html pages and navigation 【发布时间】:2011-06-10 12:40:18 【问题描述】:

您好,首先我想提一下,我知道基于 ajax 的应用程序和同一页面的重用。

这里的要求是,我想要两个单独的页面,一个用于登录,另一个用于主应用程序。现在,这不是因为我只是想要它,而是因为我在两个页面中有非常不同的布局,我很乐意将 html 元素和 css 直接放在页面中,然后将 div 放入包含动态 html 以供 gwt 填充.

即使在 myfaces 的情况下,我也没有看到具有相同登录页面和主应用程序页面的应用程序。 无论如何,我面临的问题是,假设我有两页

Login.html 带有 div : div id="login"

带有 div 的 Main.html:div id="main"

我已经在 web.xml 的欢迎文件列表中声明了它们 现在我从登录页面开始,用 gwt 小部件填充“登录”div,然后单击按钮 我正在使用以下 jsni 代码重定向到“/Main.html?gwt.codesvr=127.0.0.1:9997”

private native void gotoURL(String url) /- $wnd.location.href=url; -/;

然后尝试填充“主”div。但是我注意到的行为是应用程序再次调用入口点并且它没有找到任何元素作为“登录”并给出 NPE。 有没有办法做到这一点?还要摆脱“?gwt.codesvr=127.0.0.1:9997”?

谢谢

【问题讨论】:

【参考方案1】:

首先,您不想添加?gwt.codesvr=... 的东西——它只与托管(gwt 的调试)模式有关。您可以使用相对 url(例如简单的“Main.html”)。但是由于您只能有一个入口点,您需要将应用程序拆分为两个客户端模块(实际上是两个单独的应用程序)或根据 url 分派您的入口点(无论您是登陆 Login.html 还是 Main .html)

其次,在这种情况下我要做的是有一个没有布局的空 html,除了动态内容的单个 div 作为应用程序的唯一 html 页面。然后我会使用 2 个 UiBinders - 一个用于主页,一个用于登录,并在 url 中使用哈希后缀(使用 GWT 的历史事件和管理以及超链接小部件)来知道我在哪里。也许您应该阅读 GWT 关于历史和有状态应用程序的文档中的更多内容。试试http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsHistory.html#stateful

【讨论】:

嘿,谢谢,文档中对 Ui 活页夹的解释似乎只代表了我的问题的解决方案,而且历史机制似乎是一个不错的选择,但因为我只有有限的页面我去了你的第一个建议 RootPanel panel = RootPanel.get("login"); if(panel != null) LOG.log(Level.INFO,"登录页面。"); else 面板 = RootPanel.get("main"); LOG.log(Level.INFO,"主页.");

以上是关于GWT 多个 html 页面和导航的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 GWT 中从一页导航到另一页

GWT - 如何组织项目以拥有多个网页并在它们之间导航

GWT 应用程序中的导航

使用引导程序在多个 html 页面上显示导航栏

Phonegap 导航栏不适用于多个 html 页面

为多个页面上的导航栏创建可重用的 html