1

作为将遗留应用程序移植到 GWT 的一部分,我们需要将现有的 JSP 嵌入到 GWT 应用程序中。其中许多页面都很长,导致出现双滚动条——一个用于主应用程序的窗口,另一个用于框架的内容。我想摆脱内部滚动条,只在主窗口上有普通的浏览器滚动条。如果我可以获得渲染内容的高度(整个可滚动区域),我可以设置我的框架上的高度以匹配这个,但我看不到我会从哪里获得这些信息。

编辑:澄清一下,GWT 是主要的应用导航,并使用 iframe ( com.google.gwt.user.client.ui.Frame) 嵌入遗留内容。我要做的是使页面足够大,以使封闭的框架不需要滚动条;只有主机页面会滚动。如果有任何方法可以确定框架的“可滚动区域”,我可以动态调整主页的大小以适应它。

第二次编辑:我最终或多或少地遵循了 Jack M 的建议。但是我没有使用 HTTPRequest,而是使用了 RequestBuilder,这使它变得很容易。我想走这条手动抓取 HTML 的路线,而不是从一开始就使用框架,但由于必须“修复”托管页面中的 URL 而受到阻碍;如果用户“点击”托管的 HTML,则必须修补许多相对 URL 实例才能正常工作。使历史导航与此一起工作也有点痛苦。稍微清理一下代码后,我会尝试将其发布到人们可以获取的地方,因为我确信这一定是人们将现有应用程序迁移到 GWT 的常见用例。

4

3 回答 3

2

我能想到的完全解决此问题的最简单方法是不使用 Frame 元素,而是使用HTMLPanelHTTPRequest结合。这种方法增加了 RPC 调用的复杂性,但HTMLPanel很简单<div>,其中包含内容。因此,它可以扩展和/或联系您的 JSP 内容。最终结果将是两个页面的无缝集成。

Google 自己的 JSON示例有很好的用于发出 HTTP 请求的示例。

于 2009-03-04T17:51:52.267 回答
1

阅读本文,它很可能会解决您的问题

它解释了如何在 JavaScript 中获取窗口的大小并管理它的滚动。

于 2009-03-03T15:41:25.647 回答
0

将 GWT 嵌入旧 JSP 是否有意义?将 <div id="for.gwt"/> 放在 JSP 的某处,然后导入 JS。

不清楚您是如何将 JSP 嵌入 GWT 中的,抱歉。

我想知道框架内的 document.body.clientHeight 之类的东西会帮助你吗?

于 2009-02-26T20:05:57.393 回答