Sie gibt einfach den Namen des Tasks als String zurück. Aber man kann von den Funktionen auch HTML zurückgeben lassen. Die Funktion getId gibt einen HTML-String für einen Button zurück, der die Funktion editTask mit der taskId aufruft, wenn er angeklickt wird:
Hier ein Blick auf diese editTask-Funktion. Diese ruft TasksSession.getTask auf, um den entsprechenden Eintrag abzurufen, und ruft gotTask auf, wenn ein Ergebnis vorliegt.
gotTask nimmt das Ergebnis, konvertiert die Datumsfelder in Strings (damit man leichter damit arbeiten kann, denn DWR ist etwas zu schlau und konvertiert Javas unhandlichen Datumstyp in den noch sperrigeren Datumstyp von Javascript) und dann wird noch einmal DWRUtil.setValues aufgerufen, dieses Mal mit dem zurückgegebenen Task. Die DWR-Konvertierung wandelt den Task in eine Reihe von Javascript-Eigenschaften um, so dass die entsprechenden Felder mit den Werten gefüllt werden, wenn setValues aufgerufen wird.
Wenn ein Eintrag gespeichert oder aktualisiert wird, findet dieser Vorgang in umgekehrter Richtung statt: DWRUtil.getValues verwendet die Eigenschaften-Namen eines Javascript-Objekts, sucht nach Elementen mit denselben IDs wie die Namen, extrahiert den entsprechenden Wert des Elements und weist ihn der Eigenschaft zu.
Man beachte, wie die Daten von Strings wieder zurück in Javascript-Daten konvertiert werden, ehe TasksSession.updateTask verwendet wird, um die Änderungen zu speichern. Wieder im Java-Code von TasksSessions finden sich folgende Zeilen:
Dabei wird eine Java Task-Instanz als Parameter übergeben, bei der sich wieder DWR um die Konvertierung kümmert.
Damit hat sich der Kreis geschlossen: vom Server über das Formular und die Bearbeitung bis zum Speichern, ohne dass die Seite erneut geladen werden musste. Die gespeicherten Änderungen kann man sich auch unmittelbare in der Swing-Oberfläche der Anwendung anzeigen lassen. Und für alle, die es ganz genau wissen wollen: Ein ähnlicher Zyklus im Code findet statt, wenn man die Sortierreihenfolge ändert, obwohl dieser Wert nur vorübergehend von TasksSession gespeichert wird und nicht dauerhaft auf dem Server.
Wie man sieht, vereinfacht DWR den gesamten Prozess deutlich, Java und Javascript zur Zusammenarbeit zu bewegen. Am besten aber ist, dass es sich in eine Reihe weiterer Frameworks integrieren lässt, statt dem Entwickler sein eigenes Framework aufzuzwingen. Daher war es einfach, DWR in das ToDoTasks-Beispielprojekt zu integrieren.
Den Quellcode für dieses Tutorial gibt es als Download.
Die vorangegangenen Artikel:
Datenpersistenz bei Java-Applikationen
Java-Applikationen für Web-fähige Anwendungen
Neueste Kommentare
Noch keine Kommentare zu Ajax für Java mit Direct Web Remoting
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.