Table of contents : Tapestry 5 - Die Entwicklung von Webanwendungen mit Leichtigkeit......Page 1 Inhaltsübersicht......Page 6 3 Tapestry als ereignisgetriebenes MVC-Framework......Page 8 6 Lokalisierung......Page 9 9 Arbeiten mit JavaBeans......Page 10 11 Entwicklung wiederverwendbarer Komponenten......Page 11 14 Integration von Hibernate und Spring......Page 12 17 Tapestry IoC und Dependency Injection......Page 13 18 AOP mit Tapestry......Page 14 A Anhang......Page 15 Stichwortverzeichnis......Page 17 Einleitung......Page 18 Vorwort von Howard M. Lewis Ship......Page 22 Danksagungen......Page 24 Teil I Tapestry für Einsteiger......Page 26 1.1 Wie alles begann......Page 28 1.2 Model View Controller......Page 31 1.3 Tapestry und das Model View Controller Pattern......Page 32 1.4 Zusammenfassung......Page 33 2.1 Starten von Tapestry-Anwendungen mit Eclipse Web Tools Platform......Page 36 2.2 Starten von Tapestry-Anwendungen mit Run-Jetty-Run......Page 41 2.3.1 Tapestry-Seiten......Page 43 2.3.2 Tapestry Markup Language......Page 45 2.3.3 Tapestry-Komponenten......Page 51 2.3.4 Tapestry IoC......Page 57 2.4 Nonstop-Entwicklung mit Tapestry......Page 58 2.5 Fehlerberichte......Page 59 2.6 Zusammenfassung......Page 60 3.1 Behandeln der Benutzeraktionen......Page 62 3.2 Namenskonvention vs. Annotationen......Page 64 3.3 Kontext eines Ereignisses......Page 65 3.4 Erzeugen einer Antwort mit Handler-Methoden......Page 66 3.5 Auslösen von Ereignissen mit der Komponente EventLink......Page 68 3.6 Programmatisches Auslösen eigener Ereignisse......Page 69 3.8 Abfangen von Exceptions aus Handler-Methoden......Page 71 3.9 Zusammenfassung......Page 72 4.1 Erstellen von Verweisen zwischen Seiten......Page 74 4.2 Übermitteln von Informationen an eine Zielseite......Page 75 4.3 Übermitteln von Informationen an eine Tapestry-Seite......Page 77 4.3.1 Generieren von Handler-Methoden für den Aktivierungskontext......Page 82 4.4 Navigation durch Aktionen......Page 83 4.5 Zusammenfassung......Page 87 5.1 Lebenszyklus eines Servlets......Page 88 5.3 Lebenszyklus einer Tapestry-Seite......Page 89 5.3.1 Teilnehmen am Lebenszyklus einer Tapestry-Seite......Page 90 5.3.2 Wann werden pageLoaded(), pageAttached() und pageDetached() aufgerufen?......Page 93 5.4 Verwalten des Seitenzustandes......Page 95 5.4.1 Strategien zum Zwischenspeichern der Eigenschaften......Page 96 5.4.2 Verwerfen des Zustands einer Seite......Page 98 5.5 Verwaltung des Anwendungszustandes......Page 99 5.5.1 Erzeugen eines Session State Objects......Page 100 5.5.2 Überprüfung der Existenz eines Session State Objects......Page 101 5.5.3 Arbeiten mit dem Dienst ApplicationStateManager......Page 102 5.5.4 Eingreifen in den Prozess der Instanziierung eines Session State Objects......Page 103 5.6 Zusammenfassung......Page 104 6.1 Internationalisierung und Lokalisierung in Java......Page 106 6.4 Lokalisierte Templates......Page 107 6.5 Zugreifen auf den Nachrichtenkatalog......Page 108 6.7 Lokalisierung statischer Ressourcen......Page 110 6.8 Umschalten zwischen unterstützten Sprachen einer Anwendung......Page 113 6.9 Zusammenfassung......Page 116 7 Formulare......Page 118 7.1 Erzeugen eines einfachen Login-Formulars......Page 119 7.2 Behandlung der Ereignisse der Komponente Form......Page 122 7.3 Mehrere Formulare auf einer Seite......Page 126 7.4.1 Texteingabe in Text- und Passwortfelder......Page 127 7.4.2 Checkboxen......Page 130 7.4.3 Radiobuttons......Page 132 7.4.4 Auswahllisten......Page 135 7.4.5 Palette......Page 140 7.4.6 Eingabe eines Datums......Page 142 7.4.7 Hochladen von Dateien......Page 144 7.4.8 Abschicken von Formularen......Page 147 7.5 Labels für Formularfelder......Page 149 7.6 Eingabevalidierung......Page 151 7.6.1 Überschreiben von Validierungsmeldungen......Page 155 7.6.2 Eigene Validatoren......Page 156 7.7 Null-Werte in Formularfeldern......Page 161 7.8 Umwandlung von Eingaben zwischen Client und Server......Page 163 7.9 Zusammenfassung......Page 168 8.1 Variable Anzahl von Formularfeldern......Page 170 8.1.1 Beispielszenario......Page 171 8.1.2 Implementierung des Beispielszenarios......Page 172 8.2.2 Implementierung des Beispielszenarios......Page 177 8.3 Teilformulare......Page 180 8.4 Zusammenfassung......Page 183 9.1.1 Don’t Repeat Yourself......Page 184 9.1.2 Generieren von Formularen mit BeanEditForm......Page 186 9.1.3 Verstecken bestimmter Eigenschaften von JavaBeans......Page 188 9.1.4 Angepasste Formularfelder......Page 190 9.1.5 Reihenfolge der Formularfelder......Page 192 9.1.7 Programmatisches Ändern von Metadaten einer JavaBean......Page 193 9.1.8 Eingabenvalidierung......Page 195 9.2 Darstellen von JavaBeans......Page 197 9.3 Darstellen mehrerer JavaBeans......Page 198 9.3.1 Paging......Page 201 9.3.2 Zugriff auf die Werte der aktuellen Iteration......Page 202 9.3.3 Überschreiben der Darstellung von Spalten......Page 203 9.4.1 Neue Datentypen zum Editieren von Eigenschaften......Page 204 9.4.2 Neue Datentypen zum Darstellen von Eigenschaften......Page 206 9.5 Zusammenfassung......Page 208 10.1 Senden eines einfachen Textes als Bytestrom......Page 210 10.2 Anbieten einer Download-Funktionalität......Page 211 10.3 Anzeigen eines Diagramms......Page 213 10.4 Zusammenfassung......Page 216 Teil II Tapestry für Fortgeschrittene......Page 218 11.2 Parameter von Komponenten......Page 220 11.3 Bidirektionale Parameter......Page 222 11.4 Standard-Bindings der Parameter......Page 223 11.4.1 Standard-Binding-Methoden......Page 225 11.4.2 Generierung von Standard-Binding-Methoden......Page 226 11.5 Vererbung von Bindings......Page 227 11.6 Eigene Binding-Präfixe......Page 229 11.7 Markup-Erzeugung einer Komponente......Page 233 11.8 Informelle Parameter......Page 237 11.9 Vererben von Templates......Page 238 11.10 Umgebungsdienste......Page 240 11.11 Komponentenbibliotheken......Page 242 11.12 Zusammenfassung......Page 244 12.1 Was sind Mixins?......Page 246 12.2 Instanz-Mixins......Page 250 12.3 Implementierungs-Mixins......Page 252 12.4 Parameter von Mixins......Page 253 12.5 Mixins in Tapestry......Page 254 12.6 Zusammenfassung......Page 255 13.1 Einfache Ajax-Funktionalität......Page 256 13.2 Aktualisieren von Zones mit zusätzlichem Inhalt......Page 259 13.4 Aktualisierung mehrerer Zones......Page 262 13.5 Ajax-Unterstützung in Tapestry-Komponenten......Page 265 13.6 Ajax und JavaScript......Page 266 13.7 Optimierung der Ladezeit durch Ajax......Page 267 13.8 Erzeugen eines Autovervollständigers......Page 270 13.8.1 Erweitern von Autocomplete......Page 272 13.9 Eigene Ajax-Komponenten......Page 276 13.10 Zusammenfassung......Page 279 14.1.1 Konfiguration von Hibernate in Tapestry-Anwendungen......Page 282 14.1.2 Zugriff auf die Hibernate-Session......Page 283 14.1.3 Commit von Transaktionen......Page 284 14.1.5 Zwischenspeichern von Entitäten mit @Persist......Page 285 14.1.6 Darstellen der Hibernate-Entitäten mit Komponente Grid......Page 286 14.1.7 Zugriff auf Hibernate-Metriken......Page 287 14.1.8 Suche nach Hibernate-Entitäten......Page 288 14.1.9 Teilnahme an der Hibernate-Konfiguration......Page 289 14.2 Integration von Spring......Page 290 14.2.1 Konfiguration von Spring......Page 291 14.2.2 Benutzen von Spring-Beans in Tapestry-Anwendungen......Page 293 14.2.3 Benutzung von Tapestry-Diensten in Spring-Beans......Page 295 14.3 Zusammenfassung......Page 297 15.1 Unit-Tests für Dienste......Page 300 15.2.1 Einfacher Unit-Test für eine Seite......Page 303 15.2.2 Unit-Tests zur Überprüfung von Markup......Page 305 15.2.3 Testen von Links......Page 306 15.2.4 Testen von Formularen......Page 307 15.2.5 Überschreiben von Diensten zur Verbesserung der Testbarkeit......Page 310 15.2.6 Testen von Komponenten......Page 312 15.3.1 Ein einfacher Integrationstest......Page 313 15.3.2 Klicken auf Links in Integrationstests......Page 314 15.3.3 Testen von Formularen in Integrationstests......Page 315 15.3.4 Testen von Ajax-Funktionalität in Integrationstests......Page 317 15.4 Zusammenfassung......Page 319 16.1 Schützen der Seiten durch HTTPS......Page 320 16.1.1 Basis-URLs......Page 321 16.2 Authentifizierung......Page 323 16.3 Zusammenfassung......Page 325 Teil III Tapestry für Profis......Page 326 17.2 Inversion of Control......Page 328 17.3.1 Setter-Injektion......Page 329 17.3.3 Feld-Injektion......Page 330 17.4 Warum braucht Tapestry IoC?......Page 331 17.5 Überblick über Tapestry IoC......Page 332 17.5.2 Bind-Methoden......Page 333 17.5.4 Abhängigkeiten von Diensten......Page 335 17.6 Lebenszyklus eines Dienstes......Page 337 17.7 Eifriges Laden von Diensten......Page 338 17.8 Scope eines Dienstes......Page 339 17.9.1 Eindeutigkeit durch explizite IDs......Page 340 17.9.2 Eindeutigkeit durch Marker-Annotationen......Page 342 17.10 Konfiguration von Diensten......Page 344 17.10.1 Erweiterungspunkte in Tapestry......Page 345 17.10.2 Ungeordnete Konfigurationen......Page 346 17.10.3 Geordnete Konfigurationen......Page 348 17.10.4 Schlüssel-Wert-Paare als Konfiguration......Page 350 17.11.1 Symbole......Page 351 17.11.2 Bereitstellen von Symbolen......Page 353 17.13.1 Implementieren von Chains......Page 358 17.13.2 Implementieren von Pipelines......Page 360 17.14 Zusammenfassung......Page 363 18.1 Grundbegriffe von AOP......Page 366 18.2 Tapestry und AOP......Page 367 18.3 Autorisierung der Methodenaufrufe von Diensten......Page 369 18.4 Überschreiben von Methodenparametern der Dienste......Page 370 18.5 Überschreiben der Rückgabewerte von Dienstmethoden......Page 371 18.6 Dekorieren von Komponentenmethoden......Page 372 18.7 Zusammenfassung......Page 373 19.1 Verstehen der Typumwandlung......Page 376 19.2 Erweitern des Umwandlungsgraphen......Page 377 19.3 Durchführen der Typumwandlung......Page 378 19.4 Zusammenfassung......Page 380 20.1 Die HttpServletRequestHandler-Pipeline......Page 382 20.1.1 Bereitstellen eines eigenen HttpServletRequestFilters......Page 384 20.2.1 Bereitstellen eines eigenen RequestHandlers......Page 385 20.3.1 Behandlung von Anfragen an den Kontextpfad......Page 386 20.3.3 Auslösen von Komponentenereignissen......Page 387 20.4 Zusammenfassung......Page 388 21.1 Das zu implementierende Szenario......Page 390 21.2 Bytecodemanipulation von Seitenklassen......Page 391 21.3 Zusammenfassung......Page 396 A.1.2 AddRowLink......Page 398 A.1.3 AjaxFormLoop......Page 399 A.1.5 BeanDisplay......Page 400 A.1.6 BeanEditForm......Page 401 A.1.7 BeanEditor......Page 402 A.1.8 Checkbox......Page 403 A.1.9 DateField......Page 404 A.1.12 EventLink......Page 405 A.1.14 Form......Page 406 A.1.15 FormFragment......Page 407 A.1.16 FormInjector......Page 408 A.1.17 Grid......Page 409 A.1.19 If......Page 411 A.1.21 LinkSubmit......Page 412 A.1.22 Loop......Page 413 A.1.24 OutputRaw......Page 414 A.1.26 Palette......Page 415 A.1.27 PasswordField......Page 416 A.1.29 Radio......Page 417 A.1.32 RenderObject......Page 418 A.1.33 Select......Page 419 A.1.36 TextArea......Page 420 A.1.37 TextField......Page 421 A.1.40 Upload......Page 422 A.2.1 Autocomplete......Page 423 A.2.5 RenderInformals......Page 424 A.3.4 Statistics......Page 425 A......Page 426 D......Page 427 I......Page 428 P......Page 429 T......Page 430 Z......Page 431