Eine Seite mit einer Aktualisierungsanforderung aktualisieren

Mit dem Ajax-Anforderungstyp refresh wird das Servlet aufgefordert, die Werte der Steuerelemente in einem bestimmten Bereich der Seite zu aktualisieren. Mit der Aktualisierungsanforderung werden jedoch nicht die Variablen im JSF-Handler so aktualisiert, dass sie mit den Steuerelementen auf der Seite übereinstimmen. Dies macht diesen Anforderungstyp modular und effizient.

Bei diesem Anforderungstyp können Sie einen Bereich auf der Seite angeben, der aktualisiert werden soll, ein Ereignis, durch das die Anforderung ausgelöst werden soll und optional Parameter, die mit der Anforderung zusammen übermittelt werden sollen. Danach konfigurieren Sie 'onPreRenderFunction' für den JSF-Handler, um den angegebenen Teil der Seite zu aktualisieren.

Führen Sie die folgenden Schritte aus, um einer Webseite eine Ajax-Aktualisierungsanforderung hinzuzufügen. Bei den folgenden Schritten wird vorausgesetzt, dass ein JSF-Handler mit Variablen vorhanden ist, die an die Steuerelemente auf einer Webseite gebunden sind:
  1. Geben Sie auf der Webseite den Bereich der Seite an, den Sie mit der Ajax-Anforderung durch Erstellen eines JSF-Fensterbereichsteuerelements auf der Seite aktualisieren möchten.

    Mit Ajax-Anforderungen können in EGL nur die Abschnitte einer Seite innerhalb eines JSF-Fensterbereichsteuerelements aktualisiert werden. JSF-Fensterbereichsteuerelemente dienen hauptsächlich als Container und Organizer für andere JSF-Steuerelemente. Das Steuerelement 'Fensterbereich - Gruppenfeld' im Fach 'Erweiterte Faces-Komponenten' in der Palettenansicht ist ein sinnvolles Steuerelement, da es sich dabei nur um einen Container handelt und nicht auf der Seite sichtbar ist.

  2. Legen Sie das ID-Attribut des Fensterbereichsteuerelements auf einen auf der Seite eindeutigen Wert fest. Sie müssen diese ID später bei der Ajax-Anforderung angeben.
  3. Legen Sie die zu aktualisierenden JSF-Steuerelemente in den Fensterbereichsteuerlementen ab und stellen Sie sicher, dass die Steuerelemente an EGL-Variablen gebunden sind.
    Der Code der Fensterbereichsteuerung könnte wie im folgenden Beispiel aussehen. In diesem Fall befindet sich nur ein einziges Ausgabesteuerelement im Fensterbereich.
    <h:panelGrid id="updatablePanel" styleclass="panelGrid">
      <h:outputText id="textToUpdate" value="#{myPage.message}"
        binding="#{myPage.message_Ref}" styleClass="outputText" />
    </h:panelGrid>
  4. Legen Sie die ID-Attribute der Steuerelemente, die Sie als Parameter in der Anforderung übergeben möchten, auf der Seite fest. Diese Steuerelemente müssen sich nicht in den Fensterbereichsteuerelementen befinden, aber ihre ID-Attribute müssen auf der Seite eindeutig sein und es muss sich dabei um Eingabesteuerelemente handeln.
  5. Geben Sie das Benutzerereignis an, durch das die Ajax-Anforderung ausgelöst werden soll.

    Fügen Sie dazu ein JSF-Verhalten zu einem Eingabesteuerelement auf der Seite hinzu und wählen Sie dann ein Ereignis zum Auslösen der Anforderung aus. Die Steuerelemente mit dem Verhalten muss sich nicht in den Fensterbereichsteuerelementen befinden, aber Anforderungen können nur durch Eingabesteuerelemente ausgelöst werden.

    Sie können zum Beispiel festlegen, dass die Ajax-Anforderung auftritt, wenn der Benutzer den Fokus auf ein bestimmtes Steuerelement verschiebt. Verwenden Sie in diesem Fall das Ereignis onFocus. Um die Anforderung durchzuführen, wenn der Benutzer den Fokus von einem bestimmten Steuerelement wegbewegt, verwenden Sie das Ereignis onBlur. Weitere häufig verwendete Ereignisse sind onClick, onMouseOver und onSelect.

    1. Wählen Sie auf der Webseite das als Auslöser zu verwendende Eingabesteuerelement.
    2. Öffnen Sie, während das Steuerelement ausgewählt ist, die Sicht 'Schnelle Bearbeitung'.
    3. Wählen Sie in der Sicht 'Schnelle Bearbeitung' auf der linken Seite das Ereignis aus, zum Beispiel onBlur.
    4. Wählen Sie das Kontrollkästchen 'Vordefiniertes Verhalten verwenden' aus.
    5. Wählen Sie in der Liste 'Aktion' die Option 'Ajax-Verhalten für das angegebene Tag aufrufen' aus.
    6. Wählen Sie in der Liste 'Ziel' die ID des zu aktualisierenden Fensterbereichs aus.
    Das Verhalten zum Auslösen der Ajax-Anforderung ist nun mit dem Steuerelement verknüpft. Wenn Sie zum Beispiel ein Verhalten mit einem Eingabetextsteuerelement verknüpfen und festlegen, dass es bei dem Ereignis onBlur verwendet werden soll, kann der Code auf der Seite zum Beispiel folgendermaßen aussehen:
    <h:inputText id="nameText" value="#{myPage.name}" 
      binding="#{myPage.name_Ref}" styleClass="inputText" >
      <hx:behavior event="onblur" id="behavior1" 
        behaviorAction="get" targetAction="updatablePanel">
      </hx:behavior>
    </h:inputText>
    Das Verhalten könnte wie im folgenden Beispiel aussehen:
    Abbildung des Verhaltens in der Sicht 'Schnelle Bearbeitung'
  6. Erstellen Sie die Anforderung durch Angeben des zu aktualisierenden Fensterbereichs und der Parameter für die Anforderung:
    1. Wählen Sie auf der Webseite die Fensterbereichsteuerung aus.
    2. Öffnen Sie, während der Fensterbereich ausgewählt ist, die Ansicht 'Eigenschaften'.
    3. Navigieren Sie in der Eigenschaftsansicht unter dem Typ der Fensterbereichsteuerung zur Registerkarte Ajax.
    4. Wählen Sie auf der Registerkarte Ajax das Kontrollkästchen Ajax-Updates zulassen aus.
    5. Klicken Sie für den Anforderungstyp auf 'Aktualisieren'.
    6. Klicken Sie unter den Anforderungstypen auf die Schaltfläche 'Klicken zum Bearbeiten der Ajax-Anforderungseigenschaften'.
    7. Wählen Sie in der Liste 'Ziel' das ID-Attribut des Fensterbereichs aus, den Sie aktualisieren möchten.
    8. Fügen Sie durch Klicken auf eine der Schaltflächen 'Parameter hinzufügen' Parameter zur Anforderung hinzu:

      Die Parameter in der Tabelle 'Vom Browser gesendete Parameterwerte' beziehen sich auf den Wert der Eingabesteuerelemente auf der Seite. Wenn Sie zum Beispiel den aktuellen Wert eines Eingabesteuerelements auf der Seite als Parameter übergeben möchten, fügen Sie die ID dieses Eingabesteuerelements hier hinzu.

      Die Parameter in der Tabelle 'Auf dem Server berechnete Parameterwerte' beziehen sich entweder auf die hier eingegebenen Literalwerte oder auf den Wert der Variablen im JSF-Handler.

    Wenn Sie zum Beispiel den Wert eines Eingabesteuerelements auf der Seite übergeben möchten, sieht die neue Anfrage beispielsweise wie folgt aus:
    <hx:ajaxRefreshRequest id="ajaxRefreshRequest1" 
      target="updatablePanel" params="nameText">
    </hx:ajaxRefreshRequest>
    Im Editor könnte die Ajax-Anforderung wie im folgenden Beispiel aussehen:
    Abbildung der Ajax-Anforderung in der Eigenschaftsansicht
  7. Konfigurieren Sie 'onPreRenderFunction' für den JSF-Handler für die Seite so, dass die Anforderung akzeptiert wird.

    Da 'onPreRenderFunction' beim ersten Laden der Seite sowie bei jeder Ajax-Anforderung ausgeführt wird, möchten Sie möglicherweise feststellen, wodurch das Ausführen dieser Funktion ausgelöst wurde. Dies ist möglich, indem Sie den Wert des Parameters $$ajaxmode ermitteln. Wenn die Funktion infolge eines normalen Seitenladevorgangs ausgeführt wird, besitzt dieser Parameter den Wert null. Wenn die Funktion infolge einer Ajax-Anforderung ausgeführt wird, enthält der Parameter einen Wert.

    function onPreRender()
      
      if (J2EELib.getQueryParameter("$$ajaxmode") == NULL)
        //The page is loading for the first time.
        //Perform page loading operations here.
      else
        //The page is loading as the result of an AJAX request.
        //Perform AJAX updating operations here.
      end
    
    end
  8. Sobald festgestellt wurde, dass 'onPreRenderFunction' infolge einer Ajax-Anforderung aufgerufen wurde, können Sie die Steuerelemente auf der Seite durch Festlegen der Werte der an diese Steuerelemente gebundenen Variablen aktualisieren. Sie können nur die Steuerelemente in dem Fensterbereich in der Anforderung aktualisieren.
    Sie können die mit der Anforderung übergebenen Parameter mithilfe der Systemfunktion 'J2EELib.getQueryParameter()' abrufen. Wenn Sie zum Beispiel den Wert eines Textsteuerelements mit der ID nameText übergeben haben, können Sie den Wert dieses Parameters mithilfe des folgenden Codes abrufen:
    outputText = "Hello "::J2EELib.GetQueryParameter("nameText")::"!";

Ein Beispiel einer Ajax-Aktualisierungsanforderung finden Sie im Kapitel Abschnitte einer Webseite mit Ajax-Anforderungen aktualisieren.


Feedback