EGL ermöglicht es Ihnen, Aspekte von JSF-Steuerelementen, die in einem Web-Browser angezeigt werden, dynamisch zu aktualisieren. Sie können beispielsweise die Farbe eines Textfelds ändern, wenn der Benutzer Informationen eingibt, die in dem Feld nicht gültig sind.
Um auf eine JSF-Komponente auf einer Faces-JSP-Seite zuzureifen, definieren Sie zunächst eine EGL-Variable mit dem Typ dieser Komponente. EGL stellt 'ExternalType'-Abschnitte in dem Paket 'com.ibm.egl.jsf' bereit, um die JSF-Komponenten darzustellen. Anschließend erstellen Sie eine Variable, um die vollständige Hierarchie von JSF-Komponenten auf der Seite, auch als Komponentenbaumstruktur bezeichnet, darzustellen. Dann weisen Sie die Variable, die die JSF-Komponente darstellt, mithilfe der Funktion findComponent() der Komponentenbaumstruktur der tatsächlichen JSF-Komponente zu.
controlVar = viewRoot.findComponent(controlName);
"form1:text1"
Nachdem Sie die Variable dem JSF-Steuerelement zugeordnet haben, können Sie Funktionen dieser Variable verwenden, um Änderungen an der JSF-Komponente vorzunehmen. Verschiedene Typen von JSF-Steuerelementen akzeptieren verschiedene Funktionen. Die Funktionen, die jeder Komponententyp akzeptieren kann, sind im entsprechenden 'ExternalType'-Abschnitt der Komponenten enthalten.
Sie können auf JSF-Komponenten über diese 'ExternalType'-Abschnitte in allen Funktionen in einem JSF-Handler zugreifen, mit Ausnahme der Funktionen, die in den Eigenschaften onConstructionFunction und onPreRenderFunction angegeben sind, oder allen Funktionen, die von diesen Funktionen aufgerufen werden. Wenn diese Funktionen ausgeführt werden, wurde die Komponentenbaumstruktur noch nicht wiedergegeben, deshalb schlägt jeder Versuch, auf die JSF-Komponenten auf diese Weise zuzugreifen, fehl. Die in der Eigenschaft onPostRenderFunction angegebene Funktion kann auf die JSF-Komponentenbaumstruktur zugreifen. Da diese Funktion jedoch erst aufgerufen wird, nachdem die Seite wiedergegeben und an den Browser gesendet wurde, sind die Änderungen an der Seite erst sichtbar, wenn der Benutzer die Seite aktualisiert.
Im folgenden Code wird eine 'UIViewRoot'-Variable angegeben, die Variable erstellt und mit einem Texteingabefeld verknüpft:
import com.ibm.egl.jsf.HtmlInputText;
import com.ibm.egl.jsf.UIViewRoot;
Handler handler01 type JSFHandler
{ viewRootVar=myViewRoot }
myViewRoot UIViewRoot;
function changeFieldColor()
inputVar HtmlInputText;
inputVar = myViewRoot.findComponent("form1:text1");
inputVar.setStyle("color : red");
end
end