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

Einführung in Python 3

E-Book Einführung in Python 3
Für Ein- und Umsteiger Format: PDF

EINFÜHRUNG IN PYTHON 3Als idealer Einstieg für Programmieranfänger wie für Umsteiger behandelt dieses Buch alle grundlegenden Sprachelemente von Python 3. Aber auch Python-Kennern bietet das Buch…

Arduino

E-Book Arduino
Praxiseinstieg Format: PDF

Alle Komponenten der Hardware, Verwendung der digitalen und analogen Ports, Einsatzbeispiele mit Sensoren, Aktoren und Anzeigen…

Sicher verschlüsseln mit XOR

E-Book Sicher verschlüsseln mit XOR
Verschlüsselung ohne Hintertüren selbst programmiert Format: ePUB

Haben Sie etwas zu verbergen? Passwörter? Ihr Tagebuch? Sind Sie Berufsgeheimnisträger, z.B. Arzt oder Anwalt? Dann sollten Sie Ihre Daten verschlüsseln. Aber sind Ihre Daten auch sicher…

Business Prozess Reengineering

E-Book Business Prozess Reengineering
Eine praxisorientierte Sicht Format: ePUB/PDF

Fachbuch aus dem Jahr 2008 im Fachbereich Informatik - Angewandte Informatik, , 47 Quellen im Literaturverzeichnis, Sprache: Deutsch, Abstract: Andreas Pescholl befasst sich in seinem Buch 'Business…

Die Welt der VBA-Objekte

E-Book Die Welt der VBA-Objekte
Was integrierte Anwendungen leisten können Format: PDF

Dieses Fachbuch setzt VBA-Kenntnisse voraus. Es beschreibt die Objektmodelle der Office-Anwendungen und zeigt mithilfe integrierter Beispiele die Nutzung der Bibliotheken. Der Leser ist…

Weitere Zeitschriften

FESTIVAL Christmas

FESTIVAL Christmas

Fachzeitschriften für Weihnachtsartikel, Geschenke, Floristik, Papeterie und vieles mehr! FESTIVAL Christmas: Die erste und einzige internationale Weihnachts-Fachzeitschrift seit 1994 auf dem ...

Augenblick mal

Augenblick mal

Die Zeitschrift mit den guten Nachrichten"Augenblick mal" ist eine Zeitschrift, die in aktuellen Berichten, Interviews und Reportagen die biblische Botschaft und den christlichen Glauben ...

Bibel für heute

Bibel für heute

Kommentare, Anregungen, Fragen und Impulse zu Texten aus der Bibel Die beliebte und bewährte Arbeitshilfe für alle, denen es bei der täglichen Bibellese um eine intensive Auseinandersetzung mit ...

crescendo

crescendo

Die Zeitschrift für Blas- und Spielleutemusik in NRW- Informationen aus dem Volksmusikerbund NRW - Berichte aus 23 Kreisverbänden mit über 1000 Blasorchestern, Spielmanns- und Fanfarenzügen - ...

e-commerce magazin

e-commerce magazin

PFLICHTLEKTÜRE – Seit zwei Jahrzehnten begleitet das e-commerce magazin das sich ständig ändernde Geschäftsfeld des Online- handels. Um den Durchblick zu behalten, teilen hier renommierte ...