Mit dem Quellenassistent auf den JSF-Komponentenbaum zugreifen

Sie können EGL-Code zum Aufrufen von Java™-Funktionen verwenden, die von JSF-Steuerelementen (JavaServer Faces) erkannt werden. Auf diese Weise können Sie das Aussehen und Verhalten dieser Steuerelemente von einem JSF-Handler aus ändern. Das folgende Beispiel enthält EGL-Code zum Zugreifen auf ein JSF-Steuerelement:
package jsfhandlers;

import com.ibm.egl.jsf.*;

handler myPage type JSFHandler
   {view = "myPage.jsp",
    viewRootVar = myViewRoot}

    myViewRoot UIViewRoot;
    myInputVar string = "Hello";

  function changeColor()
    myInputField HtmlInputText;
    myInputField = myViewRoot.findComponent("form1:text1");
    myInputField.setStyle("color : red");
  end

end
In diesem Beispiel wird ein Eingabesteuerelement auf dem JSP mit dem Namen text1 vorausgesetzt, das an die Variable myInputVar gebunden ist, und eine Befehlsschaltfläche auf dem JSP, die an die Funktion changeColor gebunden ist.
Gehen Sie wie folgt vor, um von einem JSF-Handler aus auf ein JSF-Steuerelement zuzugreifen:
  1. Stellen Sie sicher, dass Ihr EGL-Webprojekt über Unterstützung für die JSF-Komponentenschnittstelle verfügt. Lesen Sie dazu das Kapitel Unterstützung für eine JSF-Komponentenschnittstelle zu einem EGL-Webprojekt hinzufügen.
  2. Erstellen Sie eine Webseite und fügen Sie ihr JSF-Steuerelemente hinzu.
  3. Optional können Sie das ID-Attribut der JSF-Steuerelemente ändern, sodass sie einfacher ermittelt werden können. Sie können das ID-Attribut ändern, indem Sie das Steuerelement auswählen und ein sinnvolles mnemonisches Zeichen eingeben, das innerhalb der Seite im Feld 'ID' in der Eigenschaftsansicht eindeutig ist.
  4. Fügen Sie im JSF-Handler der Seite den folgenden Code hinzu. Wenn Sie die Faces-JSP-Datei erstellen, nachdem Sie die Unterstützung für die JSF-Komponentenschnittstelle zum Projekt hinzugefügt haben, wird dieser Code automatisch zur Datei des JSF-Handlers hinzugefügt.
    • Fügen Sie die folgende Importanweisung hinzu:
      import com.ibm.egl.jsf.*

      Die Pakete, die durch diese Anweisung importiert werden, enthalten eine Gruppe von ExternalType-Abschnitten, durch die der Zugriff auf Java-Code in den JSF-Steuerelementen bereitgestellt wird. Diese Abschnitte müssen nicht bearbeitet werden.

    • Deklarieren Sie innerhalb des JSF-Handlers der Seite eine Variable des Typs 'UIViewRoot', wie im folgenden Beispiel gezeigt:
      myViewRoot UIViewRoot;
    • Geben Sie den Namen der Variable des Typs 'UIViewRoot' in der JSF-Handlereigenschaft 'viewRootVar' an:
      handler myPage type JSFHandler
         {view = "myPage.jsp",
          viewRootVar = myViewRoot}
  5. Drücken Sie in einer leeren Zeile innerhalb einer Funktion im JSF-Handler Strg+Umschalt+Z. Das Fenster 'EGL-Quellenassistent' wird geöffnet und die JSF-Steuerelemente werden auf der Seite angezeigt.
  6. Wählen Sie im Fenster 'EGL-Quellenassistent' das JSF-Steuerelement aus, auf das Sie zugreifen möchten. Sie können die IDs oder Steuertypen verwenden, um das gewünschte Steuerelement zu finden, oder Sie können die Maus über die Steuerelemente bewegen, um ihre Attribute anzuzeigen.
  7. Klicken Sie auf 'OK'.
    Im EGL-Quellenassistent werden zwei Zeilen EGL-Code zum JSF-Handler hinzugefügt:
    • Mit der ersten Codezeile wird eine EGL-Variable des ExternalType-Abschnitts definiert, die mit dem ausgewählten JSF-Steuerelement übereinstimmt. Im vorherigen Beispiel wurde eine Variable des Typs 'HtmlInputText' definiert, mit der mithilfe des folgenden Codes auf ein JSF-Eingabetextsteuerelement zugegriffen werden kann.
      myInputField HtmlInputText;
    • Mit der zweiten Codezeile wird diese Variable dem JSF-Steuerelement zugeordnet. Im obenstehenden Beispiel wird die Variable mithilfe des folgenden Codes einem JSF-Eingabetextsteuerelement mit dem Namen text1 zugeordnet, das sich innerhalb eines Formulars mit dem Namen form1 befindet:
      myInputField = myViewRoot.findComponent("form1:text1");
  8. Verwenden Sie die Variable zum Ändern des JSF-Steuerelements. Beim folgenden Code wird zum Beispiel die Funktion setStyle zum Ändern der Schriftfarbe in einem Eingabesteuerelement in rot verwendet:
    myInputField.setStyle("color : red");
    Wenn dieser Code ausgeführt wird, wird die Darstellung des Eingabesteuerelements geändert. In diesem Beispiel sieht der im Browser angezeigte HTML-Code folgendermaßen aus:
    <input id="form1:text1" type="text" name="form1:text1" style="color : red" />

    Die zugehörigen Themen in diesem Abschnitt enthalten weitere Beispiel von Operationen, die auf diese Weise für JSF-Steuerelemente ausgeführt werden können. Eine vollständige Liste von Operationen, die für ein bestimmtes Steuerelement aufgerufen werden können, finden Sie in den Funktionen der ExternalType-Abschnitte im Paket com.ibm.egl.jsf.

Im Folgenden finden Sie Hinweise zum Zugreifen auf JSF-Steuerelemente mithilfe von EGL-Code:

Es können viele unterschiedliche Änderungen an JSF-Steuerelementen vorgenommen werden. Beispiele finden Sie in den verwandten Tasks.


Feedback