Sie sind hier
E-Book

Praxisbuch Wicket

Professionelle Web-2.0-Anwendungen entwickeln

AutorMichael Mosmann
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2009
Seitenanzahl314 Seiten
ISBN9783446421417
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis31,99 EUR

DER SCHNELLE WEG ZU WEB 2.0

- Erfahren Sie, welch mächtige Unterstützung Wicket Java-Programmierern bei der Entwicklung von Web-2.0-Anwendungen bietet
- Folgen Sie Schritt für Schritt den praxisnahen Beispielen und erleben Sie, wie eine Anwendung mit Wicket entsteht.
- Nutzen Sie die praxiserprobten Lösungen dafür, die Entwicklung Ihrer Anwendungen zu vereinfachen und zu beschleunigen.
- Im Internet, Laufend aktuelle Informationen zu Wicket finden Sie auf der Website zu diesem Buch wicket-praxis.de

Wicket ist ein mächtiges Framework für die Entwicklung von Web-2.0-Anwendungen, die auf Java basieren. Es bietet eine einfache Integration von AJAX, ohne dass Sie sich mit XML oder JavaScript auseinandersetzen müssen, und erleichtert Ihnen die Wiederverwendung, weil es konsequent komponentenorientiert arbeitet.

In diesem Buch erfahren Sie, wie Wicket Sie bei der Entwicklung von Web-2.0-Anwendungen unterstützt und welche Vorteile es bietet. Der Autor entwickelt gemeinsam mit Ihnen eine komplette Anwendung, erklärt unterwegs die wesentlichen Konzepte von Wicket und zeigt elegante, praxiserprobte Lösungen u.a. für Aufgabenstellungen wie suchmaschinenoptimierte Seiten oder Applikationen mit Desktop-Charakter.

Das umfangreiche Kapitel "Wicket in der Praxis" bietet Ihnen eine Reihe von effektiven Lösungsvorschlägen für typische Aufgabenstellungen.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

12 Fehlersuche (S. 287-288)

Normalerweise gestaltet sich die Fehlersuche in Wicket-Anwendungen relativ einfach. Wenn der Code kompiliert werden konnte, ist man meistens schon fast am Ziel. Wie man die letzten Klippen umschifft und bei Fehlern schnell auf deren Ursache kommt, ist Ziel des folgenden Kapitels. Häufige Fehlerquellen Wicket bietet wenig Spielraum für schwer zu lokalisierende Fehler. Das bedeutet aber nicht, dass man nicht auch mit Wicket Fehler machen kann. Die folgenden Fehlerquellen sollte man Hinterkopf haben, damit die Suche kurz bleibt.

12.1.1 Komponenten fehlen

Die häufigsten Fehlerquellen sind Abweichungen zwischen dem Komponentenbaum und den Referenzen im Markup. Das erklärt sich recht einfach: Wenn der Code kompiliert werden konnte, konnte man eine große Fehlerquelle erfolgreich ausschließen. Jetzt kann es aber vorkommen, dass man vergessen hat, eine Komponente im Markup zu referenzieren. Oder man hat eine Komponente im Markup referenziert, die es an der Stelle nicht gibt. Für beide Fälle gibt Wicket passende Fehlermeldungen aus, die man sich genau durchlesen sollte. Wenn Wicket behauptet, dass man eine Komponente referenziert, die im Komponentenbaum nicht vorkommt, ist es auch nicht unwahrscheinlich, dass man die Komponente zwar erstellt, aber nicht mit add() hinzugefügt hat.

12.1.2 Komponente ist bereits vorhanden

Es gibt verschiedene Situationen, die dazu führen können, dass Wicket der Meinung ist, dass es eine Komponente mit dieser ID schon gibt. Dazu muss man Folgendes beachten: Während man mit add() Komponenten hinzufügt, wird schon geprüft, ob es in der aktuel len Hierarchieebene bereits eine Komponente mit der gleichen ID gibt. Es ist zu diesem Zeitpunkt irrelevant, ob diese Komponente im Markup überhaupt referenziert wird. Im einfachsten Fall hat man wirklich eine Komponente mit der ID bereits hinzugefügt. Spannender wird es, wenn man eine Komponente hinzufügt und sich sicher ist, dass es diese ID noch nicht gibt.

Das kann besonders bei Border-Komponenten auftreten, da sich die internen Komponenten auf derselben Hierarchieebene befinden. Der komplizierteste Fall ist gleichzeitig der häufigste. Wenn man mal das Muster erkannt hat, dann findet man auch diesen Fehler recht schnell. In einer ListView fügt man die Komponente fälschlicherweise nicht zum ListItem-, sondern zur ListView-Komponente hinzu (statt item.add() schreibt man nur add()). Das bedeutet, dass bei einer Listenlänge von mindestens zwei (was häufig der Fall ist) Wicket die Fehlermeldung ausgibt, dass es eine Komponente mit dieser ID bereits gibt. Man sollte der Versuchung widerstehen und prüfen, ob man eine ID doppelt vergeben hat, sondern dazu übergehen, in der entsprechenden Methode zu prüfen, ob man die Komponenten an das ListItem und nicht an die ListView gehängt hat.

12.1.3 Ajax funktioniert nicht

Dass Ajax nicht funktioniert, liegt am häufigsten daran, dass es kein geeignetes HTMLTag gibt, an das die per Ajax zu aktualisierende Komponente gebunden ist. Die Verwendung von wicket:container anstelle eines div-Tags kann dazu führen, dass der Java- Script-Aufruf zum Tauschen des Inhalts kein passendes HTML-Tag finden kann. In den meisten anderen Fällen gibt Wicket entsprechende Fehlermeldungen aus.

Inhaltsverzeichnis
Inhalt8
Vorwort14
1 Einleitung16
1.1 Warum Wicket?18
1.1.1 Einfach, Konsistent, Offensichtlich19
1.1.2 Wiederverwendbarkeit19
1.1.3 Sauber getrennt20
1.1.4 Sicher20
1.1.5 Effizient und skalierbar21
1.1.6 Komplett21
1.1.7 Eine gute Wahl21
1.2 Vorbereitung und Installation22
1.2.1 Java, Maven und Eclipse22
1.2.2 Versionskontrolle mit Subversion22
1.3 Grundlagen einer Webanwendung23
1.3.1 Anwendungsschichten23
1.3.2 Verzeichnis und Paketstruktur26
1.3.3 Unit-Tests27
2 Aufsetzen der Teilprojekte30
2.1 Nomenklatur der Teilprojekte30
2.2 Aufsetzen der Teilprojekte31
2.2.1 Projektbasis ParentPom31
2.2.2 Teilprojekt Base35
2.2.3 Teilprojekte Datenbankkonfiguration35
2.2.4 Teilprojekt Persistenz37
2.2.5 Teilprojekt Applikationsschicht39
2.2.6 Teilprojekt Webapp39
2.2.7 Teilprojekt ParentPom – Abschluss41
2.3 Erstellen von Eclipse-Projektdateien42
3 Mit Leben füllen44
3.1 Konfiguration mit Spring44
3.2 Datenbankkonfiguration45
3.2.1 Teilprojekt dbconfig45
3.2.2 Teilprojekt dbconfig-test46
3.2.3 Teilprojekt dbconfig-schema-update46
3.2.4 Schemagenerierung mit Hibernate47
3.3 Persistenz48
3.3.1 Datenbankzugriff – Allgemeine Schnittstellendefinition48
3.3.2 Datenbankzugriff – Hilfsklassen49
3.3.3 Datenbankzugriff – User50
3.3.4 Datenbankzugriff – Konfiguration52
3.3.5 Persistenz-Tests53
3.3.6 Schema-Update55
3.4 Anwendungsschicht56
3.5 Präsentationsschicht56
3.5.1 Hilfsklasse für Maven-Projekte56
3.5.2 Wicket Web Application57
3.5.3 Servlet-Konfiguration59
3.5.4 Spring-Konfiguration61
3.5.5 Start der Anwendung61
4 Die Wicket-Architektur64
4.1 Wicket und das HTTP-Protokoll64
4.2 Struktur64
4.2.1 WebApplication65
4.2.2 Session65
4.2.3 PageMap65
4.2.4 Page65
4.2.5 PageStore66
4.2.6 Component66
4.3 Request-Behandlung66
4.3.1 Komponentenphasen67
4.3.2 Nebenläufigkeit – Threads67
4.4 Komponenten, Modelle, Markup68
4.4.1 Komponenten68
4.4.2 Modelle68
4.4.3 Markup68
5 Modelle70
5.1 Konverter70
5.2 Einfache Modelle72
5.2.1 Modelle verändern73
5.3 Modell-Hilfsklassen75
5.4 Modelle und Serialisierung76
5.4.1 DetachableModel – Dynamische Modelldaten76
5.4.2 Kaskadierung von Modellen77
5.4.3 Automatische Kaskadierung von Modellen80
5.4.4 Datenbankzugriffsmodelle81
5.5 Komplexe Modellklassen84
5.5.1 Zugriff auf Bean-Properties84
5.5.2 Die Klasse PropertyModel87
5.5.3 CompoundPropertyModel89
5.6 Ausgelagerte Informationen91
5.6.1 Einfacher Zugriff auf Ressourcen91
5.6.2 ResourceModel91
5.6.3 StringResourceModel93
6 Komponenten96
6.1 Basisklasse Component96
6.1.1 Komponentenbaum96
6.1.2 Darstellungsphasen98
6.1.3 Page, Session und Application99
6.1.4 Komponentenpfad99
6.1.5 Modelle99
6.1.6 Feedback100
6.2 Grundlagen der Vererbung100
6.2.1 Eine Seite mit eigenen Komponenten100
6.2.2 Vererbung für Fortgeschrittene106
6.3 Style, Locale und Variation109
6.3.1 Markup-Variationen109
6.4 Sichtbarkeit114
6.4.1 wicket:enclosure115
6.4.2 Empfehlung zur Anwendung116
6.5 Ajax117
6.5.1 Ajax-Events118
6.5.2 Einfache Event-Behandlung119
6.5.3 Automatische Event-Behandlung120
7 Basiskomponenten124
7.1 Gruppierende Komponenten124
7.1.1 Seiten124
7.1.2 Panel132
7.1.3 Fragment134
7.1.4 Border135
7.1.5 ComponentBorder140
7.1.6 WebMarkupContainer141
7.2 Inhaltselemente142
7.2.1 Label und MultiLineLabel142
7.2.2 Lokaler Konverter144
7.2.3 XML145
7.2.4 Das wicket:message-Tag146
7.2.5 Image147
7.3 Links152
7.3.1 Von A nach B152
7.3.2 Ajax und Links153
7.3.3 Link-Tricks155
7.3.4 Externe Links156
7.3.5 Popups156
7.3.6 ResourceLink158
7.3.7 Formularlinks159
7.4 Behavior159
7.4.1 Darf es etwas JavaScript sein?159
7.4.2 Attribute anpassen160
7.4.3 Attribute erweitern162
7.4.4 Ajax und Formulare163
8 Listen und Tabellen164
8.1 Darstellung von Listen164
8.1.1 RepeatingView164
8.1.2 RefreshingView165
8.1.3 ListView167
8.1.4 PropertyListView168
8.1.5 ColumnListView169
8.2 DataProvider171
8.2.1 DataView171
8.2.2 GridView173
8.2.3 DataGridView174
8.2.4 DataTable176
8.2.5 DefaultDataTable177
9 Formulare184
9.1 Voraussetzungen184
9.2 Feedback185
9.3 Basisklasse für alle Beispiele186
9.4 Formulare absenden187
9.4.1 Absenden mit Submit-Button187
9.4.2 Button-Komponente188
9.4.3 Submit per Ajax189
9.4.4 POST und GET190
9.5 Textfelder191
9.5.1 Typangabe193
9.5.2 Automatische Typermittlung194
9.6 Label196
9.7 CheckBox197
9.8 RadioButton200
9.9 Auswahlfelder201
9.9.1 Select201
9.9.2 DropDownChoice203
9.9.3 ListMultipleChoice205
9.10 Dateien hochladen207
9.10.1 FileUpload207
9.10.2 MultiFileUpload209
9.11 Gültigkeitsprüfung210
9.11.1 StringValidator211
9.11.2 Minimum und Maximum212
9.11.3 E-Mail212
9.11.4 URL214
9.11.5 Eigene Validatoren214
9.12 FormValidator216
9.12.1 Passwortprüfung216
9.12.2 Eigene Prüfung218
9.13 Ajax220
9.13.1 AjaxFormSubmitBehavior220
9.13.2 AjaxFormValidatingBehavior222
9.13.3 AjaxComponentUpdatingBehavior222
9.13.4 OnChangeBehavior224
9.13.5 AutoCompleteTextField225
9.14 AjaxEditableLabel227
9.15 Erweitertes Feedback229
9.15.1 Feedback zum Formular229
9.15.2 Feedback für die Komponente230
9.15.3 Feedback als Rahmen231
9.15.4 Feedback als Indikator232
9.15.5 Feedback per CSS233
9.16 Generierte Formulare235
9.17 Verschachtelte Formulare237
10 Sessions und Security240
10.1 Einfache Variante240
10.1.1 Eine eigene Session-Klasse240
10.1.2 Geschützte Seiten241
10.1.3 Strategie241
10.1.4 WebApplication242
10.1.5 Seiten243
10.2 Marker an Komponenten246
10.3 Elemente ausblenden248
11 Wicket in der Praxis250
11.1 Die Integration von Spring250
11.2 Navigation252
11.3 CSS einbinden259
11.4 Eigene Basiskomponenten265
11.5 Komponententausch268
11.5.1 AjaxFallbackConfirmLink269
11.5.2 Wizard271
11.6 Suchmaschinenoptimierung273
11.6.1 Pfad für BookmarkablePages273
11.6.2 SessionTimeoutPage277
11.6.3 SEO-Links279
11.6.4 Servlet-Filter283
11.6.5 Tracking mit Google Analytics286
11.7 Ressourcen289
11.7.1 Dynamisch erzeugte Grafiken289
11.7.2 Automatisch generierte Thumbnails291
11.7.3 Download durch Formular292
11.7.4 Shared Resources293
11.7.5 RSS-Feed295
11.8 Links auf Seiten und Ressourcen297
11.9 Optimierungen299
11.9.1 Applikation299
11.9.2 Konverter299
11.9.3 Debug299
11.9.4 Ressource300
12 Fehlersuche302
12.1 Häufige Fehlerquellen302
12.1.1 Komponenten fehlen302
12.1.2 Komponente ist bereits vorhanden302
12.1.3 Ajax funktioniert nicht303
12.2 Unit-Tests303
13 Anfang oder Ende?308
Register310

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

cards Karten cartes

cards Karten cartes

Die führende Zeitschrift für Zahlungsverkehr und Payments – international und branchenübergreifend, erscheint seit 1990 monatlich (viermal als Fachmagazin, achtmal als ...

Deutsche Hockey Zeitung

Deutsche Hockey Zeitung

Informiert über das nationale und internationale Hockey. Die Deutsche Hockeyzeitung ist Ihr kompetenter Partner für Ihren Auftritt im Hockeymarkt. Sie ist die einzige bundesweite Hockeyzeitung ...

Eishockey NEWS

Eishockey NEWS

Eishockey NEWS bringt alles über die DEL, die DEL2, die Oberliga sowie die Regionalligen und Informationen über die NHL. Dazu ausführliche Statistiken, Hintergrundberichte, Personalities ...

F- 40

F- 40

Die Flugzeuge der Bundeswehr, Die F-40 Reihe behandelt das eingesetzte Fluggerät der Bundeswehr seit dem Aufbau von Luftwaffe, Heer und Marine. Jede Ausgabe befasst sich mit der genaue Entwicklungs- ...

FileMaker Magazin

FileMaker Magazin

Das unabhängige Magazin für Anwender und Entwickler, die mit dem Datenbankprogramm Claris FileMaker Pro arbeiten. In jeder Ausgabe finden Sie von kompletten Lösungsschritten bis zu ...