Suchen und Finden
Inhalt
8
Vorwort
14
1 Einleitung
16
1.1 Warum Wicket?
18
1.1.1 Einfach, Konsistent, Offensichtlich
19
1.1.2 Wiederverwendbarkeit
19
1.1.3 Sauber getrennt
20
1.1.4 Sicher
20
1.1.5 Effizient und skalierbar
21
1.1.6 Komplett
21
1.1.7 Eine gute Wahl
21
1.2 Vorbereitung und Installation
22
1.2.1 Java, Maven und Eclipse
22
1.2.2 Versionskontrolle mit Subversion
22
1.3 Grundlagen einer Webanwendung
23
1.3.1 Anwendungsschichten
23
1.3.2 Verzeichnis und Paketstruktur
26
1.3.3 Unit-Tests
27
2 Aufsetzen der Teilprojekte
30
2.1 Nomenklatur der Teilprojekte
30
2.2 Aufsetzen der Teilprojekte
31
2.2.1 Projektbasis ParentPom
31
2.2.2 Teilprojekt Base
35
2.2.3 Teilprojekte Datenbankkonfiguration
35
2.2.4 Teilprojekt Persistenz
37
2.2.5 Teilprojekt Applikationsschicht
39
2.2.6 Teilprojekt Webapp
39
2.2.7 Teilprojekt ParentPom – Abschluss
41
2.3 Erstellen von Eclipse-Projektdateien
42
3 Mit Leben füllen
44
3.1 Konfiguration mit Spring
44
3.2 Datenbankkonfiguration
45
3.2.1 Teilprojekt dbconfig
45
3.2.2 Teilprojekt dbconfig-test
46
3.2.3 Teilprojekt dbconfig-schema-update
46
3.2.4 Schemagenerierung mit Hibernate
47
3.3 Persistenz
48
3.3.1 Datenbankzugriff – Allgemeine Schnittstellendefinition
48
3.3.2 Datenbankzugriff – Hilfsklassen
49
3.3.3 Datenbankzugriff – User
50
3.3.4 Datenbankzugriff – Konfiguration
52
3.3.5 Persistenz-Tests
53
3.3.6 Schema-Update
55
3.4 Anwendungsschicht
56
3.5 Präsentationsschicht
56
3.5.1 Hilfsklasse für Maven-Projekte
56
3.5.2 Wicket Web Application
57
3.5.3 Servlet-Konfiguration
59
3.5.4 Spring-Konfiguration
61
3.5.5 Start der Anwendung
61
4 Die Wicket-Architektur
64
4.1 Wicket und das HTTP-Protokoll
64
4.2 Struktur
64
4.2.1 WebApplication
65
4.2.2 Session
65
4.2.3 PageMap
65
4.2.4 Page
65
4.2.5 PageStore
66
4.2.6 Component
66
4.3 Request-Behandlung
66
4.3.1 Komponentenphasen
67
4.3.2 Nebenläufigkeit – Threads
67
4.4 Komponenten, Modelle, Markup
68
4.4.1 Komponenten
68
4.4.2 Modelle
68
4.4.3 Markup
68
5 Modelle
70
5.1 Konverter
70
5.2 Einfache Modelle
72
5.2.1 Modelle verändern
73
5.3 Modell-Hilfsklassen
75
5.4 Modelle und Serialisierung
76
5.4.1 DetachableModel – Dynamische Modelldaten
76
5.4.2 Kaskadierung von Modellen
77
5.4.3 Automatische Kaskadierung von Modellen
80
5.4.4 Datenbankzugriffsmodelle
81
5.5 Komplexe Modellklassen
84
5.5.1 Zugriff auf Bean-Properties
84
5.5.2 Die Klasse PropertyModel
87
5.5.3 CompoundPropertyModel
89
5.6 Ausgelagerte Informationen
91
5.6.1 Einfacher Zugriff auf Ressourcen
91
5.6.2 ResourceModel
91
5.6.3 StringResourceModel
93
6 Komponenten
96
6.1 Basisklasse Component
96
6.1.1 Komponentenbaum
96
6.1.2 Darstellungsphasen
98
6.1.3 Page, Session und Application
99
6.1.4 Komponentenpfad
99
6.1.5 Modelle
99
6.1.6 Feedback
100
6.2 Grundlagen der Vererbung
100
6.2.1 Eine Seite mit eigenen Komponenten
100
6.2.2 Vererbung für Fortgeschrittene
106
6.3 Style, Locale und Variation
109
6.3.1 Markup-Variationen
109
6.4 Sichtbarkeit
114
6.4.1 wicket:enclosure
115
6.4.2 Empfehlung zur Anwendung
116
6.5 Ajax
117
6.5.1 Ajax-Events
118
6.5.2 Einfache Event-Behandlung
119
6.5.3 Automatische Event-Behandlung
120
7 Basiskomponenten
124
7.1 Gruppierende Komponenten
124
7.1.1 Seiten
124
7.1.2 Panel
132
7.1.3 Fragment
134
7.1.4 Border
135
7.1.5 ComponentBorder
140
7.1.6 WebMarkupContainer
141
7.2 Inhaltselemente
142
7.2.1 Label und MultiLineLabel
142
7.2.2 Lokaler Konverter
144
7.2.3 XML
145
7.2.4 Das wicket:message-Tag
146
7.2.5 Image
147
7.3 Links
152
7.3.1 Von A nach B
152
7.3.2 Ajax und Links
153
7.3.3 Link-Tricks
155
7.3.4 Externe Links
156
7.3.5 Popups
156
7.3.6 ResourceLink
158
7.3.7 Formularlinks
159
7.4 Behavior
159
7.4.1 Darf es etwas JavaScript sein?
159
7.4.2 Attribute anpassen
160
7.4.3 Attribute erweitern
162
7.4.4 Ajax und Formulare
163
8 Listen und Tabellen
164
8.1 Darstellung von Listen
164
8.1.1 RepeatingView
164
8.1.2 RefreshingView
165
8.1.3 ListView
167
8.1.4 PropertyListView
168
8.1.5 ColumnListView
169
8.2 DataProvider
171
8.2.1 DataView
171
8.2.2 GridView
173
8.2.3 DataGridView
174
8.2.4 DataTable
176
8.2.5 DefaultDataTable
177
9 Formulare
184
9.1 Voraussetzungen
184
9.2 Feedback
185
9.3 Basisklasse für alle Beispiele
186
9.4 Formulare absenden
187
9.4.1 Absenden mit Submit-Button
187
9.4.2 Button-Komponente
188
9.4.3 Submit per Ajax
189
9.4.4 POST und GET
190
9.5 Textfelder
191
9.5.1 Typangabe
193
9.5.2 Automatische Typermittlung
194
9.6 Label
196
9.7 CheckBox
197
9.8 RadioButton
200
9.9 Auswahlfelder
201
9.9.1 Select
201
9.9.2 DropDownChoice
203
9.9.3 ListMultipleChoice
205
9.10 Dateien hochladen
207
9.10.1 FileUpload
207
9.10.2 MultiFileUpload
209
9.11 Gültigkeitsprüfung
210
9.11.1 StringValidator
211
9.11.2 Minimum und Maximum
212
9.11.3 E-Mail
212
9.11.4 URL
214
9.11.5 Eigene Validatoren
214
9.12 FormValidator
216
9.12.1 Passwortprüfung
216
9.12.2 Eigene Prüfung
218
9.13 Ajax
220
9.13.1 AjaxFormSubmitBehavior
220
9.13.2 AjaxFormValidatingBehavior
222
9.13.3 AjaxComponentUpdatingBehavior
222
9.13.4 OnChangeBehavior
224
9.13.5 AutoCompleteTextField
225
9.14 AjaxEditableLabel
227
9.15 Erweitertes Feedback
229
9.15.1 Feedback zum Formular
229
9.15.2 Feedback für die Komponente
230
9.15.3 Feedback als Rahmen
231
9.15.4 Feedback als Indikator
232
9.15.5 Feedback per CSS
233
9.16 Generierte Formulare
235
9.17 Verschachtelte Formulare
237
10 Sessions und Security
240
10.1 Einfache Variante
240
10.1.1 Eine eigene Session-Klasse
240
10.1.2 Geschützte Seiten
241
10.1.3 Strategie
241
10.1.4 WebApplication
242
10.1.5 Seiten
243
10.2 Marker an Komponenten
246
10.3 Elemente ausblenden
248
11 Wicket in der Praxis
250
11.1 Die Integration von Spring
250
11.2 Navigation
252
11.3 CSS einbinden
259
11.4 Eigene Basiskomponenten
265
11.5 Komponententausch
268
11.5.1 AjaxFallbackConfirmLink
269
11.5.2 Wizard
271
11.6 Suchmaschinenoptimierung
273
11.6.1 Pfad für BookmarkablePages
273
11.6.2 SessionTimeoutPage
277
11.6.3 SEO-Links
279
11.6.4 Servlet-Filter
283
11.6.5 Tracking mit Google Analytics
286
11.7 Ressourcen
289
11.7.1 Dynamisch erzeugte Grafiken
289
11.7.2 Automatisch generierte Thumbnails
291
11.7.3 Download durch Formular
292
11.7.4 Shared Resources
293
11.7.5 RSS-Feed
295
11.8 Links auf Seiten und Ressourcen
297
11.9 Optimierungen
299
11.9.1 Applikation
299
11.9.2 Konverter
299
11.9.3 Debug
299
11.9.4 Ressource
300
12 Fehlersuche
302
12.1 Häufige Fehlerquellen
302
12.1.1 Komponenten fehlen
302
12.1.2 Komponente ist bereits vorhanden
302
12.1.3 Ajax funktioniert nicht
303
12.2 Unit-Tests
303
13 Anfang oder Ende?
308
Register
310
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.