onConstructionFunction

Die JSF-Handlereigenschaft onConstructionFunction gibt eine Funktion im JSF-Handler an, die ausgeführt wird, wenn die Seite zum ersten Mal erstellt wird. (Diese Eigenschaft hieß früher onPageLoadFunction.) Genauer gesagt wird die Funktion ausgeführt, wenn die Page-Bean (die den JSF-Handler im Web-Server darstellt) instanziiert (erstellt) wird.
  • Für Seiten mit Sitzungsbereich wird die Page-Bean nur das erste Mal, wenn der Benutzer die Seite besucht, erstellt.
  • Für Seiten mit Anforderungsbereich wird die Page-Bean jedesmal, wenn der Benutzer die Seite besucht, erstellt.
  • Wenn die Eigenschaft cancelOnPageTransition des JSF-Handlers auf YES gesetzt ist, wird die Page-Bean aus der Sitzung entfernt, wenn der Benutzer auf eine andere Seite wechselt, selbst wenn die Eigenschaft scope auf session gesetzt ist. Deshalb wird die Page-Bean beim nächsten Seitenbesuch des Benutzers erneut erstellt.

Die angegebene Funktion wird ausgeführt, wenn ein anderer JSF-Handler oder ein Programm die Steuerung an den JSF-Handler übergibt. Diese Funktion darf nicht erneut ausgeführt werden, wenn der JSF-Handler die Steuerung an sich selbst weitergibt oder wenn eine Funktion im JSF-Handler beendet wird, ohne dass eine Anweisung forward ausgegeben wurde.

Vergleichen Sie die folgenden verwandten Eigenschaften:
  • onPreRenderFunction gibt eine Funktion an, die ausgeführt wird, bevor die Seite im Arbeitsspeicher gerendert wurde.
  • onPostRenderFunction gibt eine Funktion an, die ausgeführt wird, nachdem die Seite im Arbeitsspeicher gerendert wurde, aber bevor sie in der Anzeige ausgegeben wird.

Wenn Sie Parameter für eine beliebige Funktion angeben, auf die diese Eigenschaften verweisen, müssen Sie dieselben Parameter für alle Funktionen angeben.

Wenn Sie einen Sitzungsbereich verwenden und cancelOnPageTransition auf NO setzen, platziert JSF den Handler in der Sitzung, bis das Sitzungszeitlimit überschritten oder die Sitzung beendet wird. Der Handler kann Daten für ungenutzte Felder oder andere nicht erforderliche Informationen enthalten. Möglicherweise können Sie Speicherplatz einsparen, wenn Sie Folgendes tun:
  • Verwenden Sie einen Anforderungsbereich.
  • Speichern Sie explizit alle Daten, die über das Ende der Gültigkeit der Anforderung hinaus erhalten bleiben sollen.
  • Stellen Sie die Daten in der Funktion wieder her, die durch onConstructionFunction oder onPreRenderFunction angegeben ist.

Sie können eine Seite aus dem Sitzungsbereich mithilfe der 'j2eeLib'-Funktionen clearSessionAttr() und clearEGLSessionAttr() explizit entfernen (siehe clearSessionAttr() und clearEGLSessionAttrs()).

Einschränkungen

  • Führen Sie keinen zeitaufwendigen Datenabruf in der während der Erstellung gültigen Funktion durch, weil JSF in bestimmten Situationen bei der Erstellung eines beliebigen Handlers in der Anwendung eine Synchronisierung startet. In diesem Fall beschränkt sich der Server auf die Erstellung jeweils einer Kopie der Page-Bean, selbst wenn viele Benutzer dieselbe Seite anfordern. Führen Sie in der während der Erstellung ausgeführten Funktion keinen Fernaufruf durch, da das Herstellen einer Verbindung mit der fernen Maschine sehr lange dauern kann. Für die vor dem Rendern ausgeführte Funktion gibt es diese Einschränkung nicht.
  • Die Page-Bean wird nur erstellt, wenn der Server, der die Seite rendert, auf einen Verweis auf ein Feld oder eine Funktion im JSF-Handler trifft. Wenn in der Seite keine Felder an EGL-Variablen und keine Schaltflächen an EGL-Funktionen gebunden sind, erstellt JSF keine Page-Bean und die während der Erstellung ausgeführte Funktion wird nicht ausgeführt. Wenn in der Seite keine Felder an EGL-Variablen, aber eine Schaltfläche an eine EGL-Funktion gebunden ist, erstellt der Server die Page-Bean und führt die während der Erstellung ausgeführte Funktion nur aus, wenn der Benutzer die Schaltfläche zum ersten Mal drückt.
  • Die während der Erstellung ausgeführte Funktion kann nicht auf die JSF-Komponentenbaumstruktur zugreifen, wie unter Zugriff auf Komponentenbaumstruktur erläutert.
  • Die während der Erstellung ausgeführte Funktion kann keine Fehlernachricht für eine Komponente mit sysLib.setError() festlegen. Allerdings kann die Funktion sysLib.setErrorForComponentID() verwenden.
  • Die während der Erstellung ausgeführte Funktion kann eine Anweisung forward to URL, aber keine Anweisung forward to label verwenden.

Beispiel

Im folgenden Beispiel wird die Eigenschaft im Kontext eines JSF-Handlerabschnitts dargestellt:

Handler  handler01  type JSFHandler
        { onConstructionFunction="resetVars" }
  ...
  Function resetVars()
     ...
  end
end

Kompatibilität

Tabelle 1. Unterstützung für die Eigenschaft 'onConstructionFunction'
Datenelement JSF-Handler VGUI-Datensatz Konsol-UI Textformular Java™ Textformular COBOL Druckformular Java Druckformular COBOL
Nein Ja Nein Nein Nein Nein Nein Nein