2009-02-26 4 views
1

loswerden Im Rahmen der Portierung einer Legacy-Anwendung auf GWT müssen wir unsere vorhandenen JSPs in unserer GWT-App einbetten. Viele dieser Seiten sind ziemlich lang, was zu einer doppelten Bildlaufleiste führt - eine für das Fenster der Haupt-App und eine zweite für den Inhalt des Rahmens. Ich möchte die interne Bildlaufleiste loswerden und habe nur die normale Browser-Bildlaufleiste im Hauptfenster. Wenn ich die Höhe des gerenderten Inhalts (den gesamten scrollbaren Bereich) erreichen könnte, könnte ich einfach die Höhe meines Rahmens einstellen, um das zu erreichen, aber ich sehe nicht, wo ich diese Information bekommen würde.wie Doppel-Scrollbars auf internen Rahmen der GWT-App

BEARBEITEN: um zu verdeutlichen, GWT ist die Haupt App Navigation und verwendet iframes (com.google.gwt.user.client.ui.Frame), um den Legacy-Inhalt einzubetten. Was ich versuche, ist, die Seite groß genug zu machen, so dass der eingeschlossene Rahmen keine Bildlaufleisten benötigt; Nur die Host-Seite wird geblättert. Wenn es eine Möglichkeit gibt, den "scrollbaren Bereich" eines Rahmens zu bestimmen, könnte ich die Hauptseite dynamisch anpassen, um sie anzupassen.

2. EDIT: Ich endete mehr oder weniger nach Jack M Vorschlag. Aber anstatt HTTPRequest zu verwenden, habe ich den RequestBuilder verwendet, was es einfach macht. Ich wollte diesen Weg gehen, den HTML manuell zu greifen, anstatt einen Rahmen von Anfang an zu verwenden, aber wurde dadurch behindert, dass ich die URLs in den gehosteten Seiten "reparieren" musste; Es gibt viele Instanzen relativer URLs, die repariert werden müssen, um zu funktionieren, wenn der Benutzer das gehostete HTML "durchklickt". Historisches Navigieren funktioniert damit auch etwas mühsam. Sobald ich meinen Code ein wenig aufgeräumt habe, werde ich versuchen, ihn irgendwo zu veröffentlichen, wo Leute darauf kommen können, denn ich bin mir sicher, dass dies ein häufiger Anwendungsfall für Leute sein muss, die bestehende Apps zu GWT migrieren.

Antwort

2

Der einfachste Weg, um dieses Problem zu lösen, ist, kein Frame-Element zu verwenden, sondern ein HTMLPanel kombiniert mit einem HTTPRequest. Dieser Ansatz erhöht die Komplexität des RPC-Aufrufs, aber HTMLPanel ist ein einfacher <div>, der Inhalt enthält. Als solches kann es Ihren JSP-Inhalt erweitern und/oder kontaktieren. Das Endergebnis wäre eine nahtlose Integration der beiden Seiten.

Google eigenen example on JSON hat gute Beispiele für eine HTTP-Anfrage.

0

Kann es sinnvoll sein, GWT in alte JSP einzubetten? Platziere < div id = "for.gwt"/> irgendwo auf der JSP und importiere JS.

Es ist nicht klar, wie Sie JSP in GWT einbetten, sorry.

Würde etwas wie document.body.clientHeight im Rahmen Ihnen helfen, frage ich mich?

+0

In meiner GWT App erstelle ich ein Frame-Objekt. Dann mache ich frame.setUrl ("/ path/to/legacy_content") - also lädt der Browser im Grunde eine neue Seite in den Frame. Der ältere Inhalt wird zufällig von einer JSP generiert. –

+1

ist es möglich, die Bildlaufleisten zu entfernen, aber es ist nicht möglich, die Seite "fit" den Rahmen zu machen, was ich verstehe, was Sie eigentlich wollen. Wenn Sie die Bildlaufleiste wirklich verschwinden lassen wollen, setzen Sie den Überlauf des Rahmens auf none. – Chii

Verwandte Themen