Inhaltsverzeichnis | 6 |
Vorwort zur 2. Auflage | 12 |
Vorwort | 14 |
1 Einleitung | 16 |
1.1 Ziel dieses Buches | 16 |
1.2 Der Leser | 18 |
1.3 Das Buch im Netz | 19 |
1.4 Verwendete Software | 20 |
1.5 Aufbau des Buches | 21 |
1.6 JSF-Versionen vor 2.0 | 22 |
2 Motivation | 24 |
2.1 Was sind JavaServer Faces? | 24 |
2.2 JavaServer Faces und Zukunftssicherheit | 25 |
2.3 Neuerungen in JavaServer Faces 2.0 | 26 |
2.4 Spezifikationen und Implementierungen | 27 |
2.5 Die erste JSF-Anwendung: Tic-Tac-Toe | 27 |
3 Die Anwendung Comedians | 36 |
3.1 JSF-Seiten | 37 |
3.2 Managed Beans | 40 |
3.3 JPA | 47 |
4 JavaServer Faces im Detail | 50 |
4.1 Bearbeitungsmodell einer JSF-Anfrage | 50 |
4.1.1 Wiederherstellung des Komponentenbaums | 53 |
4.1.2 Übernahme der Anfragewerte | 54 |
4.1.3 Validierung | 55 |
4.1.4 Aktualisierung der Modellobjekte | 56 |
4.1.5 Aufruf der Anwendungslogik | 56 |
4.1.6 Rendern der Antwort | 57 |
4.2 Expression-Language | 58 |
4.2.1 Syntax | 59 |
4.2.2 Bean-Properties | 59 |
4.2.3 Vordefinierte Variablen | 62 |
4.2.4 Vergleiche, arithmetische und logische Ausdrücke | 64 |
4.2.5 Methodenaufrufe und Methodenparameter | 67 |
4.2.6 Verwendung der Expression-Language in Java | 68 |
4.3 Managed Beans | 69 |
4.3.1 Architekturfragen | 70 |
4.3.2 Automatische Verwaltung von Managed Beans | 71 |
4.3.3 Initialisierung | 73 |
4.3.4 Komponentenbindung | 79 |
4.3.5 Java-EE-5-Annotationen | 83 |
4.3.6 JSF-Annotationen | 83 |
4.4 Validierung und Konvertierung | 87 |
4.4.1 Standardkonvertierer | 87 |
4.4.2 Konvertierung von Kalenderdaten und Zahlen | 92 |
4.4.3 Konvertierung von Aufzählungstypen | 96 |
4.4.4 Anwendungsdefinierte Konvertierer | 99 |
4.4.5 Standardvalidierer | 102 |
4.4.6 Validierungsmethoden | 107 |
4.4.7 Anwendungsdefinierte Validierer | 109 |
4.4.8 Eingabekomponenten und das immediate-Attribut | 110 |
4.4.9 Bean-Validierung mit JSR 303 | 113 |
4.4.10 Fehlermeldungen | 120 |
4.5 Event-Verarbeitung | 129 |
4.5.1 JSF-Events und allgemeine Event-Verarbeitung | 130 |
4.5.2 Action-Events | 132 |
4.5.3 Befehlskomponenten und das immediate-Attribut | 136 |
4.5.4 Value-Change-Events | 137 |
4.5.5 Data-Model-Events | 142 |
4.5.6 Phase-Events | 143 |
4.5.7 System-Events | 145 |
4.6 Navigation | 148 |
4.6.1 Implizite Navigation | 149 |
4.6.2 View-to-View-Regeln | 150 |
4.6.3 Regeln für mehrere Seiten | 153 |
4.6.4 Regeln für Action-Methoden | 154 |
4.6.5 Regeln zur bedingten Navigation | 154 |
4.6.6 Redirects | 155 |
4.6.7 Verweise auf Nicht-JSF-Seiten | 156 |
4.6.8 View-Parameter und Lesezeichen | 158 |
4.6.9 Die technische Sicht | 161 |
4.7 Internationalisierung | 162 |
4.7.1 Lokalisierung | 163 |
4.7.2 Dynamische und explizite Lokalisierung | 170 |
4.7.3 Klassen als Resource-Bundles | 171 |
4.7.4 Managed Beans und Lokalisierung | 174 |
4.8 Konfiguration | 175 |
4.8.1 Die Servlet-Konfiguration | 176 |
4.8.2 Die JSF-Konfiguration | 185 |
4.8.3 XML-Konfigurationsdatei versus Annotationen | 194 |
4.9 Client-Ids und Komponenten-Ids | 195 |
4.9.1 Id-Arten und Namensräume | 195 |
4.9.2 Client- und server-seitige Programmierung mit Ids | 199 |
4.10 Verwendung allgemeiner Ressourcen | 202 |
4.10.1 Einfache Ressourcen | 203 |
4.10.2 Versionierte Ressourcen und Ressourcen-Bibliotheken | 204 |
4.10.3 Positionierung von Ressourcen | 206 |
4.11 JSTL-Bibliotheken | 209 |
5 Die UI-Komponenten | 214 |
5.1 Die Standardkomponenten | 215 |
5.2 Render-Sätze | 219 |
5.3 Die JSF-Standard-Bibliotheken | 219 |
5.4 Die HTML-Bibliothek | 221 |
5.5 Die Kernbibliothek | 223 |
5.6 Die Facelets-Bibliothek | 225 |
5.7 Die Composite-Component-Bibliothek | 226 |
5.8 Die JSTL-Kern- und Funktionsbibliothek | 227 |
6 Facelets | 230 |
6.1 Templating mit Facelets | 230 |
6.2 Ein Template-Beispiel: UPN-Rechner | 233 |
6.3 Dynamische Templates | 238 |
6.4 Weitere Facelets-Tags | 240 |
6.5 Entwicklung eigener Komponenten | 243 |
6.6 JSF-Tags als Attribute der Standard-HTML-Tags | 249 |
7 Ajax | 252 |
7.1 Motivation | 253 |
7.2 Die Grundlagen von Ajax in JSF 2.0 | 254 |
7.2.1 JSFs JavaScript-Bibliothek | 255 |
7.2.2 Das -Tag | 257 |
7.2.3 Das überarbeitete Bearbeitungsmodell einer JSF-Anfrage | 260 |
7.3 Weiterführende Themen | 262 |
7.3.1 Navigation | 262 |
7.3.2 JavaScript mit Java | 263 |
7.3.3 Nicht gerenderte Komponenten | 265 |
7.3.4 Abgekürzte Komponenten-Ids | 267 |
7.4 Ajax mit RichFaces | 268 |
7.4.1 Die -Komponente | 269 |
7.4.2 Die -Komponente | 271 |
7.4.3 Die -Komponente | 272 |
7.4.4 Die - und -Komponenten | 274 |
7.4.5 Die -Komponente | 274 |
7.4.6 Die -Komponente | 275 |
7.5 RichFaces-Komponenten mit eingebauter Ajax-Unterstützung | 276 |
7.5.1 Drag and Drop | 277 |
7.5.2 Bäume | 282 |
7.5.3 Darstellung großer Datenmengen | 293 |
8 JavaServer Faces im Einsatz: Die Anwendung Online-Banking | 300 |
8.1 Der Seitenaufbau | 301 |
8.2 Das Geschäftsmodell | 304 |
8.3 Authentifizierung und Autorisierung | 307 |
8.3.1 Realisierung der Authentifizierung | 308 |
8.3.2 Die Abmeldung | 310 |
8.4 Pflege der Stammdaten | 311 |
8.5 Überweisungen | 314 |
8.6 Anzeige aller Konten | 318 |
8.7 Anzeige der Umsätze | 321 |
8.8 Export der Umsätze im PDF- und Excel-Format | 325 |
9 JavaServer Faces und Java-EE | 332 |
9.1 Java-EE 5 | 333 |
9.2 Java-EE 6 | 338 |
9.3 CDI und Weld | 339 |
9.4 Konversationen mit CDI | 342 |
9.5 Weitere Neuerungen in Java-EE 6 | 348 |
9.5.1 Servlet 3.0 | 348 |
9.5.2 Web-Profile | 349 |
9.5.3 Managed Beans | 350 |
9.6 Authentifizierung und Autorisierung mit JBoss Seam | 351 |
10 Systeme und Werkzeuge | 360 |
10.1 GlassFish | 360 |
10.1.1 Installation und Betrieb | 361 |
10.1.2 Die Datenbank JavaDB | 363 |
10.1.3 Konfiguration | 365 |
10.2 Eclipse | 367 |
10.2.1 Installation | 368 |
10.2.2 GlassFish-Plugin | 369 |
10.2.3 JBoss Tools | 371 |
10.2.4 Projekte | 374 |
10.3 Firebug | 374 |
10.4 Selenium | 377 |
10.4.1 Selenium-IDE | 377 |
10.4.2 Selenium-RC | 380 |
10.5 JSFUnit | 383 |
Anhang A: Annotationen | 390 |
A.1: JSF-Annotationen | 390 |
A.2: Annotationen für Managed Beans | 393 |
Anhang B: Die Tags der Standardbibliotheken | 398 |
B.1: HTML-Attribute | 399 |
B.2: JavaScript-basierte HTML-Attribute | 401 |
B.3: HTML- und JSF-Attribute für CSS | 403 |
B.3.1: Regeln | 403 |
B.3.2: Klassen- und Id-Selektoren | 404 |
B.4: HTML-Tag-Bibliothek | 405 |
B.5: Kernbibliothek | 447 |
B.6: Facelets | 480 |
Anhang C: URL-Verzeichnis | 492 |
Literaturverzeichnis | 498 |
Sachverzeichnis | 500 |