2 UML-based Web Engineering - UWE - Ludwig-Maximilians ...
2 UML-based Web Engineering - UWE - Ludwig-Maximilians ...
2 UML-based Web Engineering - UWE - Ludwig-Maximilians ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
z.B. auf die Namen aller in der PVS-Datenbank persistierten Personen, die zur Erzeugung der<br />
Vorschlagsliste für das entsprechende Autovervollständigungs-Feature benötigt werden). In<br />
solchen Fällen ist ein AJAX-Request zu lancieren, der eine Controller-Action aufruft, welche<br />
ihrerseits die gewünschten Informationen beschafft und an den Client zurücksendet. In beiden<br />
Fällen wird üblicherweise eine weitere JavaScript-Funktion zur Realisierung der dritten und<br />
letzten Komponente der RIA-Pattern-Trias, der Präsentation, benötigt. Diese Funktion führt in<br />
der Regel verschiedene DOM-Manipulationen durch, um das Ergebnis der Operation in<br />
geeigneter Weise auf der <strong>Web</strong>oberfläche darzustellen.<br />
Im Abschnitt über die Software-Technologien, die bei der Implementierung des PVS zum<br />
Einsatzes kamen, wurden die JavaScript-Bibliotheken vorgestellt, die zur RIA-<br />
Programmierung eingesetzt wurden. Im Folgenden soll an einem kleinen Code-Beispiel<br />
illustriert werden, wie die Umsetzung eines LiveValidation-Features durch die Funktionalität<br />
vereinfacht wurde, welche von der LiveValidation-Bibliothek zur Verfügung gestellt wird.<br />
1 var titleValidator = new LiveValidation('publication_title',<br />
2 {onlyOnBlur: true,<br />
3 onValid: function() {<br />
4 $('title_error').update('');<br />
5 },<br />
6 onInvalid: function() {<br />
7 $('title_error').update(errorMessageTitle);<br />
8 }<br />
9 });<br />
10 titleValidator.add( Validate.Presence );<br />
In Zeile 1 – 9 wird ein LiveValidation-Objekt erzeugt. Es kapselt die Funktionalität, die für<br />
die Live-Validierung eines Eingabefeldes benötigt wird. Der Konstruktor verlangt als<br />
Eingabeparameter die ID des zu validierenden Input-Elements sowie einen assoziativen Array,<br />
in dem diverse Optionen angegeben werden können. Im Beispiel spezifiziert der Eingabe-<br />
Array das Ereignis, das die Live-Validierung auslösen soll (Zeile 2) sowie zwei Callback-<br />
Funktionen, die im Erfolgsfall (Zeile 3) bzw. bei negativem Ergebnis (Zeile 6) das<br />
Validierungsresultat auf der <strong>Web</strong>oberfläche präsentieren. In ihren Rümpfen wird zunächst<br />
über die $-Methode (einer Hilfsmethode der Prototype-Bibliothek) auf das für die Anzeige<br />
des Validierungsresultats zuständigen HTML-Element zugegriffen und dessen Textinhalt<br />
entsprechend modifiziert. In Zeile 10 wird dem LiveValidation-Objekt schließlich der<br />
durchzuführende Validierungsmechanismus injiziert. Validate.Presence ist eine<br />
Funktion, die die LiveValidation-Bibliothek zur Verfügung stellt und die überprüft, ob der<br />
Wert des Eingabefeldes nicht-leer ist. Damit ist das LiveValidation-Objekt 'scharfgestelllt' und<br />
überprüft bei blur-Ereignissen bzgl. des Titel-Eingabefeldes im Publikationsformular, ob das<br />
Feld einen gültigen Wert besitzt.<br />
Die Implementierung asynchron angeforderter Prozesse beinhaltet im Gegensatz zur<br />
Realisierung von RIA-Features, die je nach Feature manchmal vollständig clientseitig<br />
erfolgen kann, stets asynchrone Kommunikation mit dem Server. Die umfangreiche AJAX-<br />
Unterstützung, die Rails bietet, erleichtert die Umsetzung dieses Aspekts der RIA-<br />
Modellierung wesentlich. Dies soll anhand einer weiteren Programmier-Episode zur<br />
Implementierung der Login-Funktionalität des PVS illustriert werden 75 .<br />
Zunächst musste das Login-Formular 'ajaxifiziert' werden, d.h. so manipuliert werden, dass<br />
durch Betätigung seines Submit-Buttons kein synchroner, sondern einen asynchroner Request<br />
75 Siehe dazu auch die entsprechenden Modellausschnitte in den Abbildungen 42 und 43 (Kapitel 5.6).<br />
90