Eine Seite mit einer Übergabeanforderung aktualisieren

Ajax-Anforderungen des Typs submit funktionieren so ähnlich wie die Aktion, die erfolgt, wenn ein Benutzer auf einer EGL-gesteuerten Webseite auf eine Schaltfläche klickt: Die Steuerung wird an den JSF-Handler weitergegeben und alle Variablen im JSF-Handler werden so aktualisiert, dass sie den Werten der JSF-Steuerelemente entsprechen. Anders als bei einer Aktualisierungsanforderung ist es nicht erforderlich, Parameter zu übergeben, weil alle Variablen im JSF-Handler mit den aktuellen Werten des Steuerelements aktualisiert werden. Wie bei einer Aktualisierungsanforderung werden jedoch nur die Steuerelemente in einer JSF-Fensterbereichsteuerung aktualisiert.

Bei diesem Anforderungstyp können Sie einen Bereich auf der Seite angeben, der aktualisiert werden soll, und ein Ereignis, durch das die Anforderung ausgelöst werden soll. Danach konfigurieren Sie 'onPreRenderFunction' für den JSF-Handler so, dass der angegebene Teil der Seite aktualisiert wird.

Führen Sie die folgenden Schritte aus, um einer Webseite eine Ajax-Übergabeanforderung 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. 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'
  5. Erstellen Sie die Anforderung durch Angeben des zu aktualisierenden Fensterbereichs:
    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 'Übergeben'.

      Die Eigenschaftsansicht sieht folgendermaßen aus:

      Eigenschaftsansicht mit der Angabe des Anforderungstyps zum Aktualisieren des ausgewählten Fensterbereichs

    6. Klicken Sie unter den Anforderungstypen in der Eigenschaftsansicht 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.
    Die neue Anforderung könnte folgendermaßen aussehen:
    <hx:ajaxRefreshSubmit id="ajaxRefreshSubmit1" 
      target="updatablePanel">
    </hx:ajaxRefreshSubmit>
  6. 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
  7. 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 festlegen. Sie können nur die Steuerelemente in dem Fensterbereich in der Anforderung aktualisieren.

Feedback