Mit dem Google Web Toolkit (GWT) kann das Frontend einer Webapplikation bequem in Java entwickelt werden. Für die Steuerung des UIs wird von Google das Model-View-Presenter-Pattern (MVP) empfohlen.
Es schreibt eine strenge Trennung von View und Presenter vor, die zu einer sauberen Gliederung führt und der Testbarkeit dient. Wir zeigen, wie man MVP mit GWT einsetzt und dabei Unit-Tests zur Qualitätssicherung nutzt.
Activities und Places helfen in GWT-Applikationen die Browser-History zu verwenden. Wir zeigen, wie Activities und Places mit MVP zusammen spielen.
6. • 1996 von Mike Potel
• Verwandt mit MVC
• Ziele
– Verantwortlichkeiten trennen
– Flexibilität von UIs bei Änderungen des
Models erhöhen
– Testbarkeit der Applikationslogik
Model View Presenter
6
10. Daten
Wie sehen die Daten aus?
Wie werden die Daten spezifiziert?
10
Selektionen der Daten
• z.B. Filterung nach ID, Berechtigungen, …
• oder Darstellung derselben Daten in versch. Kontext
11. Daten
Wie sehen die Daten aus?
Wie werden die Daten spezifiziert?
Wie werden die Daten modifiziert?
11
• Änderung der Daten auf Selektionen: Insert, Update, …
12. UI
Wie werden Daten dargestellt?
12
• Welche Widgets werden benützt?
• Wie sehen versch. Views für versch. Benutzergruppen aus?
13. UI
Wie werden Daten dargestellt?
Wie verändern Events die Daten?
13
• Datenänderung durch Events (Klick, Drag&Drop, …)
14. UI
Wie werden Daten dargestellt?
Wie verändern Events die Daten?
Wie fügt man alles zusammen?
14
= Presenter – Businesslogik verbindet Daten und UI
28. UiBinder
28
• Trennung Markup und Displaylogik
• Reines Markup in XML File
• Wird in HTML übersetzt
• Code in Java-Klasse
• Compile-time checking von Referenzen
42. Referenzen
44
Cenarion Techblog – Erfahrungen mit GWT, Tipps & Tricks
http://www.cenarion.com/techblog
View-Tests in GWT: http://www.objectpartners.com/2013/11/07/testing-gwt-
with-gwtmockito/
GWT SDK inkl. einiger Beispielprojekte
http://www.gwtproject.org/download.html
Real-World Projects:
http://www.gwtproject.org/examples.html#real-world-projects
What is the best way to test gwt code:
http://stackoverflow.com/questions/411257/what-is-the-best-way-to-test-gwt-
code