Mit Navigationsregeln zwischen Webseiten navigieren

Mit einem JSF-Handler können die Navigation auf einer Webseite, das Weiterleiten des Benutzers von einer Seite auf eine andere und das Übergeben von Daten zwischen Seiten gesteuert werden. EGL ist mit den Navigationsfunktionen von JSF (JavaServer Faces) zum Steuern der Seitennavigation auf diese Weise sehr gut kompatibel.

In EGL werden zwei Möglichkeiten zum Navigieren auf eine andere Seite bereitgestellt: FORWARD TO URL und die Standardanweisung FORWARD TO LABEL. Wenn Sie FORWARD TO URLverwenden, geben Sie eine absolute oder relative URL zur Zielseite an. Wenn Sie hingegen FORWARD TO LABELverwenden, geben Sie eine Navigationsregel an, mit der auf die Zielseite verwiesen wird. Verwenden Sie zum Navigieren zwischen Seiten in EGL-Anwendungen FORWARD TO LABEL und verwenden Sie FORWARD TO URL zum Navigieren auf eine Webseite in einer anderen Anwendung.

Das JSF-Servlet antwortet auf eine FORWARD-Anweisung, indem entweder ein FORWARD oder ein REDIRECT abgesetzt wird. Mit einer JSF-Umleitung wird der Web-Browser des Benutzers zum Laden einer anderen Zielseite aufgefordert. Die Folgen sind dieselben, wie wenn der Benutzer die neue URL in die Adresszeile des Browsers eingegeben hätte, einschließlich des Verlusts eventueller Anforderungsinformationen, die von der ersten Seite übergeben wurden. Durch eine JSF-Umleitung, nicht zu verwechseln mit der EGL-Anweisung FORWARD wird die neue Seite im Browser geladen, ohne dass dem Browser angezeigt wird, dass die Position geändert wurde. Im Fall der JSF-Umleitung 'denkt' der Browser, es würde sich noch immer um die ursprüngliche Seitenposition handeln, obwohl die neue Zielseite angezeigt wird. In diesem Fall sind die Anforderungsinformationen für die neue Zielseite verfügbar. Der Browser und das Servlet sind jedoch nicht synchron, weil der Browser nicht dieselbe Seite anzeigt, die vom Servlet angefordert wurde. Durch diese Abweichung können Probleme entstehen. Relative Links zu Dateien wie Bildern und Formatvorlagen müssen relativ zur ursprünglichen Seite sein (nicht zur weitergeleiteten Zielseite), da der Browser die Links relativ zur ursprünglichen Seite interpretiert.

In den in den Eigenschaften 'onConstructionFunction', 'onPreRenderFunction' und 'onPostRenderFunction' eines JSF-Handlers definierten Funktionen können Sie FORWARD TO URL verwenden, aber nicht FORWARD TO LABEL.

Zu einer Kennzeichnung weiterleiten

Verwenden Sie beim Navigieren von einer Seite zu einer anderen Seite innerhalb einer EGL-Anwendung FORWARD TO LABEL. Um einen Benutzer von einer Seite auf eine andere Seite weiterleiten zu können, müssen Sie den Namen der JSF-Navigationsregel kennen, die auf die Zielseite verweist. Standardmäßig ist der Name der Navigationsregel, mit der auf eine Seite verwiesen wird, derselbe wie der Name des JSF-Handlers, mit dem diese Seite verwaltet wird.

Eine Seite mit dem Namen myPage.jsp zum Beispiel kann einen JSF-Handler mit dem Namen myPage in einer Datei mit dem Namen myPage.egl besitzen. Standardmäßig heißt die Navigationsregel für diese Seite myPage. Wenn Sie die Navigationsregel der Zielseite kennen, können Sie die EGL-Anweisung FORWARD verwenden, um den Web-Browser des Benutzers auf diese Zielseite weiterzuleiten. Verwenden Sie in diesem Fall zum Weiterleiten auf die Seite myPage.jsp den folgenden Code:
forward to label "myPage";
Um die Navigationsregel zu finden, mit der auf eine Seite verwiesen wird, durchsuchen Sie die Datei faces-config.xml, die sich im Ordner WebContent/WEB-INF Ihres EGL-Webprojekts befindet. In dieser Datei sind die Regeln und Seiten aufgelistet, auf die mit diesen Regeln verwiesen wird. Im vorherigen Beispiel wurde eine Navigationsregel wie die folgende verwendet:
<navigation-case>
    <from-outcome>myPage</from-outcome>
    <to-view-id>/myPage.jsp</to-view-id>
</navigation-case>
Die Navigationsregel enthält zwei Zeichenfolgen: eine Kennzeichnung für die Regel und einen relativen Link auf die Zielseite. In diesem Fall lautet die Kennzeichnung myPage und der Link verweist auf eine Seite mit dem Namen 'myPage.jsp' im selben Verzeichnis der Seite, für die die Navigationsregel verwendet wurde. Beachten Sie den einleitenden Schrägstrich vor dem Dateinamen der Seite. Dieser ist für die Navigationsregel erforderlich. Diese Navigationsregel führt zu einer JSF-Umleitung, wie sie weiter oben beschrieben wurde.
Verwenden Sie eine relative URL-Referenz, um auf eine Seite in einem anderen EGL-Webprojekt zu navigieren. Um zum Beispiel von der Seite 'myProject01/myPage01.jsp' auf eine Datei mit dem Namen 'myPage02.jsp' in einem Projekt mit dem Namen 'myProjekt02' zu verweisen, verwenden Sie die folgende Navigationsregel:
<navigation-case>
    <from-outcome>myPage02</from-outcome>
    <to-view-id>/../myProject02/myPage02.jsp</to-view-id>
    <redirect/>
</navigation-case>
Das Tag <redirect/> ist erforderlich, damit mit der Navigationsregel auf eine Zielseite in einem anderen Projekt verwiesen werden kann. In JSF wird eine Umleitung anstelle einer Weiterleitung verwendet, wenn von einer Seite in einem Projekt auf eine Seite in einem anderen Projekt verwiesen wird.

Auf eine URL weiterleiten

Sie können FORWARD auch verwenden, um den Benutzer auf eine andere Webseite zu übergeben, indem Sie die vollständige URL der Seite angeben:
forward to URL "http://www.ibm.com";
Sie können auch eine relative URL angeben:
forward to URL "../myPage02.jsp";
Abschließend können Sie eine zum Kontextstammelement relative URL oder das Verzeichnis angeben, das alle Projekte auf dem Server enthält:
forward to URL "/myProject02/myPage02.jsp";

Wenn Sie eine Weiterleitung auf eine andere von einem EGL-JSF-Handler gesteuerte Seite durchführen, stellen Sie sicher, dass die richtige Erweiterung (.faces oder .jsp) verwendet wird, wie im Kapitel Eine Webseite auf einem Server ausführen beschrieben.


Feedback