Grails und Ajax

Alle Tags haben gemeinsam, dass über das update-Attribut ein DIV-Element im HTML-Text per ID referenziert werden kann, welches mit den erhaltenen Daten aktualisiert wird. Folgendes Beispiel demonstriert dies anhand eines remoteLink-Tags:

AJAX Call

Im Beispiel oben wird die Action remoteLinkCall des aktuell verwendeten Controllers (d.h. des Controllers, der die Seite ausgeliefert hat) aufgerufen und der Parameter-id übergeben. Die Antwort des Servers wird dazu verwendet, um das DIV-Element mit der ID-message zu aktualisieren. Hierbei wird der Text innerhalb des DIV-Elements ausgetauscht, nicht das DIV-Element an sich.

Eine weitere Gemeinsamkeit der Ajax-Tags sind die Attribute action, controller und id. Diese zeigen bei regulären Links an, welche Action in welchem Controller aufgerufen wird. Per ID kann man darüber hinaus noch den id-Parameter bestimmen. Zwar sind controller und action optional (wenn keine Action definiert wird, wird die default Action des aktuellen Controllers verwendet), es bietet sich jedoch an, diese Informationen der Übersichtlichkeit wegen im GSP-Text zu verankern.

Für etwas Verwirrung sorgen die vielen Events wie onSuccess oder onFailure sowie die beiden Attribute before und after. Über diese Attribute kann man JavaScript-Funktionen registrieren, die entweder bei Eintreten eines Events (onSuccess etc.) oder vor der Ausführung des Ajax Calls oder nach dem Ajax Call ausgeführt werden. Auch bei einem fehlgeschlagenen Ajax Call wird eine über after angegebene Funktion ausgeführt. Ein Blick in den generierten JavaScript Code offenbart, dass die Funktion einfach nach der Ausführung des Ajax Call ausgeführt wird. Folgendes Beispiel demonstriert die Benutzung von before und after:


                User: 

Da before und after immer ausgeführt werden, bieten sich diese Attribute zum Steuern eines Ajax Spinners an. Before blendet den Spinner ein, after wieder aus. Auch im Fehlerfall wird der Spinner dadurch ausgeblendet (Listing 1).

Listing 1
    
 

                User: 

Sollten Sie das Grails-Standard-Template (main.gsp) übrigens nicht verändert haben, so müssen Sie keinen Spinner extra in Ihre GSP-Seiten einbauen. main.gsp fügt bereits jeder dekorierten GS-Page den Spinner wie im obigen Beispiel hinzu.

Etwas schwerer als before und after sind die vielen onXXX Event Handler zu verdauen. Über diese Attribute werden JavaScript-Funktionen zu bestimmten Events aufgerufen, etwa wenn der Ajax Call gerade ausgeführt wird (d.h. direkt vor Beginn der Ausführung) oder wenn er erfolgreich beendet wurde (onSuccess). Die Abfolge der Events, inklusive before und after, ist in Abbildung 1 zu sehen.

Abb. 1: Aufruf der Event Handler je nach Ereignis des Ajax Call
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.