2010-07-20 4 views
17

Ich komme in Google Web Toolkit und bin ein wenig verwirrt über die Einstiegspunkte in GWT. Google docs sagen:Mehrere Einstiegspunkte in GWT

Wenn Sie mehrere Einstiegspunkte (die Schnittstelle, die onModuleLoad() definiert) innerhalb eines Moduls, werden sie alle so schnell nacheinander aufgerufen werden, wie das Modul (und das äußere Dokument) ist fertig. Wenn Sie mehrere GWT-Module auf derselben Seite laden, wird der EntryPoint jedes Moduls aufgerufen, sobald das Modul und das äußere Dokument bereit sind. Es kann nicht garantiert werden, dass die EntryPoints von zwei Modulen gleichzeitig oder in derselben Reihenfolge ausgelöst werden, in der ihre Auswahlskripts auf der Hostseite angegeben wurden.

Also braucht jede Seite in Ihrer Website einen Einstiegspunkt dafür definiert?

Benötigen Sie wirklich nur einen Einstiegspunkt, wenn Sie Javascript basierend auf Ihren Java-Klassen generiert haben?

Können Sie mehrere automatisch generierte js-Definitionen in einer einzigen * .gwt.xml-Datei kombinieren?

EDIT: Link zu zitierte Quelle: http://code.google.com/webtoolkit/doc/1.6/DevGuideOrganizingProjects.html

Dank!

Antwort

10

Der einfachste Weg, um eine GWT-App zu erstellen, ist eine einzige Seite für die gesamte Anwendung und eine einzige oberste Ebene module (definiert in einem .gwt.xml file). Jedes Modul hat eine einzige EntryPoint Klasse. Dann sind alle Ihre verschiedenen "Seiten" Unterabschnitte derselben Seite, idealerweise mithilfe des Historienmechanismus von GWT, um Statusänderungen zu verfolgen, die in einer Nicht-AJAX-Webanwendung neue Seiten wären. Wenn Sie die Dinge so einrichten, benötigen Sie einen EntryPoint für Ihre gesamte App.

Das Bit der Dokumente, die Sie zitiert haben (Link?) Diskutieren, was ich denke, ist ein fortgeschrittener Anwendungsfall, wo Sie mehr als ein Modul haben, das Sie auf einer einzigen Seite laden.

+0

Interessant, ich kann sehen, wie dies funktionieren würde, wo Ihr Navigationsmenü bestimmt, was im Hauptinhaltsbereich angezeigt wird (in einem "Standard" -Seitenlayout), aber dann, wenn einige Seiten dieses Layout (dh die Anmeldeseite) brechen Benötigen Sie einen separaten Einstiegspunkt für solche Seiten? – Adam

+0

Ok, also nach dem Nachdenken über meine Frage zur Anmeldeseite scheint die folgende Konfiguration Sinn zu ergeben: - Login-Seite - Benutzer gibt ihre OpenID-Kriterien ein, drückt das Formular-Senden, das zu einem Authentifizierungs-Servlet zurückruft. Nach einer erfolgreichen Authentifizierung leitet es den Benutzer zum EntryPoint der App (wir sagen es wie ein Dashboard); Wenn die Authentifizierung fehlschlägt, gibt das Servlet eine Nachricht zur Anzeige auf der Anmeldeseite zurück. Ich denke, das macht Sinn, da Sie die js-Datei der App nicht laden möchten, wenn Sie nicht sicher sind, dass der Benutzer sich authentifizieren kann. Die Authentifizierung selbst ist ziemlich eindimensional. – Adam

+1

Das wäre ein guter Weg, es zu tun. Eine andere Möglichkeit besteht darin, die gesamte Seite, einschließlich der Anmeldeseite, Teil Ihrer GWT-App zu machen und Code Splitting zu verwenden, um sicherzustellen, dass nur die Login-Funktionalität geladen wird (siehe http://code.google.com/webtoolkit/). doc/next/DevGuideCodeSplitting.html) – aem

-1

Es gibt eine Option, U kann Maven-Projekt mit Unterprojekten erstellen, bedeutet U kann Multi-Einstiegspunkt erstellen,
jeder Einstiegspunkt eigene html haben. See more details

+1

Könnten Sie einen Inhalt der Seite einfügen, auf die Ihr Link verweist? Dies wird Ihrer Antwort einen gewissen Kontext hinzufügen, und es wird sinnvoll bleiben, wenn der Link in Zukunft verloren gehen könnte. –