Befehle beim Laden von Seiten ausführen

Ein JSF-Handler kann Funktionen enthalten, die beim Laden von Seiten automatisch ausgeführt werden.

Mithilfe der JSF-Handlereigenschaften 'onPreRenderFunction', 'onPostRenderFunction' und 'onConstructionFunction' können Sie Funktionen angeben, die an unterschiedlichen Punkten im Lebenszyklus der Seite ausgeführt werden.

Wann diese Funktionen ausgeführt werden, hängt vom Wert der Eigenschaft 'scope' der Seite ab. Wenn der Benutzer eine EGL-gesteuerte Seite zum ersten Mal besucht, wird der JSF-Handler in EGL geladen, der zur Laufzeit von einem Page-Bean dargestellt wird. Wenn der Bereich der Seite auf session (Standardwert) festgelegt wird, bleibt die Bean während der Sitzung des Benutzers aktiv, auch wenn der Benutzer von der Seite aus auf eine andere Seite navigiert. Wenn der Benutzer zur Seite zurückkehrt, ist die Bean weiterhin verfügbar. Wenn der Bereich der Seite auf request festgelegt ist, bleibt die Bean nicht aktiv, wenn der Benutzer von der Seite aus auf eine andere Seite navigiert. In diesem Fall gehen alle in der Bean gespeicherten Dateien verloren und die Bean muss erneut geladen werden, wenn der Benutzer zur Seite zurückkehrt.

Wenn Sie mehrere dieser Eigenschaften angeben, beachten Sie Folgendes:
Im folgenden Beispiel eines JSF-Handlers wird die Verwendung von zwei dieser Funktionen dargestellt:
  1. Erstellen Sie in einem EGL-Webprojekt eine neue Webseite mit dem Namen loadTest.jsp.
  2. Öffnen Sie den JSF-Handler der neuen Seite durch Klicken mit der rechten Maustaste auf die geöffnete Seite im Editor und klicken Sie dann auf 'Seitencode bearbeiten'.
  3. Ändern Sie den Code im JSF-Handler entsprechend dem folgenden Beispiel:
    package jsfhandlers;
    
    handler loadTest type JSFHandler
        {onConstructionFunction = onConstruction, 
         onPreRenderFunction = onPreRender,
         scope = session,
         view = "loadTest.jsp"} 
          
          numberOfLoads int;
          messageString string;
    
        function onConstruction()
            numberOfLoads = 0;
        end
        
        function onPreRender(incomingNumber int)
            numberOfLoads = incomingNumber + 1;
            messageString = "You have viewed this page " 
                + numberOfLoads + " times.";
        end
        
        function forwardBack()
            forward numberOfLoads to "loadTest";
        end
        
    end
  4. Speichern und schließen Sie den JSF-Handler.
  5. Fügen Sie auf der Seite 'loadTest.jsp' ein Feld 'Ausgabe' vom Fach 'Erweiterte Faces-Komponenten' in der Palettenansicht hinzu.
  6. Fügen Sie neben dem Ausgabefeld 'Schaltfläche - Befehl' aus dem Fach 'Erweiterte Faces-Komponenten' in der Palettenansicht hinzu.
  7. Ziehen Sie messageString von der Sicht 'Seitendaten' direkt auf das Ausgabefeld. Nun wird die Variable im JSF-Handler an das Ausgabefeld auf der Seite gebunden.
  8. Ziehen Sie forwardBack() von der Sicht 'Seitendaten' direkt auf die Befehlsschaltfläche. Nun wird die Schaltfläche an die Funktion im JSF-Handler gebunden.
  9. Speichern Sie die Seite und generieren Sie das Projekt.
  10. Führen Sie die Seite auf einem Server aus.
Wenn Sie die Seite zum ersten Mal ausführen, wird folgende Meldung angezeigt: 'You have viewed this page 1 times.' In diesem Fall wird die in der Eigenschaft 'onConstructionFunction' angegebene Funktion zuerst ausgeführt und die Variable numberOfLoads auf Null festgelegt. Danach wird die in der Eigenschaft 'onPreRenderFunction' festgelegte Funktion ausgeführt, die Variable auf 1 festgelegt und die Variable der Nachrichtenzeichenfolge auf 'You have viewed this page 1 times.' festgelegt. Jedes folgende Mal, wenn die Seite erneut geladen wird, wird die Variable um Eins erhöht. Dadurch wird angezeigt, dass die Funktion 'onPreRenderFunction' jedes Mal ausgeführt wird, jedoch nicht die Funktion 'onConstructionFunction'.

Wenn Sie das Beispiel ausprobieren, in dem 'scope' auf request festgelegt ist, wird die Variable '1' nicht übersteigen, da die Funktion 'onConstructionFunction' die Variable jedes Mal, wenn Sie die Seite aktualisieren, auf Null festlegt. Speichern Sie Ihre Änderungen im JSF-Handler, führen Sie die Generierung durch und publizieren Sie das Projekt erneut auf dem Server.

Für diese Funktionen gelten die folgenden Einschränkungen:

Weitere Informationen finden Sie in den entsprechenden Kapiteln zu diesen Eigenschaften.


Feedback