2009-02-26 21 views
1

作为将旧应用程序移植到GWT的一部分,我们需要将我们现有的JSP嵌入到我们的GWT应用程序中。这些页面中的很多页面都很长,导致双滚动条 - 一个用于主应用程序的窗口,另一个用于框架的内容。我想摆脱内部滚动条,只需在主窗口上有正常的浏览器滚动条。如果我能够获得渲染内容的高度(整个可滚动区域),我可以将帧的高度设置为与此匹配,但我不知道从哪里获得该信息。如何摆脱GWT应用程序内部框架上的双滚动条

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

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

回答

2

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

Google自己的example on JSON提供了一个很好的HTTP请求示例。

0

将GWT嵌入到旧的JSP中可能有意义吗?将< div id =“for.gwt”/ >放在JSP的某处,然后导入JS。

不知道如何将JSP嵌入到GWT中,对不起。

框架内的document.body.clientHeight会帮助你,我想知道吗?

+0

在我的GWT应用程序中,我创建了一个Frame对象。然后我做frame.setUrl(“/ path/to/legacy_content”) - 所以浏览器实际上会在框架中加载一个新页面。传统内容恰好是由JSP生成的。 – 2009-02-26 20:19:37