08.12.2012 Aufrufe

2 UML-based Web Engineering - UWE - Ludwig-Maximilians ...

2 UML-based Web Engineering - UWE - Ludwig-Maximilians ...

2 UML-based Web Engineering - UWE - Ludwig-Maximilians ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!