Table Of ContentJAVA
SERVER
FACES 2.0
bernd MÜLLER
EIN ARBEITSBUCH FÜR DIE PRAXIS
2. Auflage
Inhaltsverzeichnis
Vorwort zur 2. Auflage . . . . . . . . . . . . . . . . . . . . . . . . . . XI
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIII
1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Ziel dieses Buches . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Der Leser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Das Buch im Netz . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Verwendete Software . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Aufbau des Buches . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 JSF-Versionen vor 2.0 . . . . . . . . . . . . . . . . . . . . . . . 7
2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1 Was sind JavaServer Faces? . . . . . . . . . . . . . . . . . . . . 9
2.2 JavaServer Faces und Zukunftssicherheit . . . . . . . . . . . . . 10
2.3 Neuerungen in JavaServer Faces 2.0 . . . . . . . . . . . . . . . 11
2.4 Spezifikationen und Implementierungen . . . . . . . . . . . . . 12
2.5 Die erste JSF-Anwendung: Tic-Tac-Toe . . . . . . . . . . . . . 12
3 Die Anwendung Comedians . . . . . . . . . . . . . . . . . . . . . 21
3.1 JSF-Seiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2 Managed Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 JPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 JavaServer Faces im Detail . . . . . . . . . . . . . . . . . . . . . 35
4.1 Bearbeitungsmodell einer JSF-Anfrage . . . . . . . . . . . . . . 35
VI Inhaltsverzeichnis
4.1.1 Wiederherstellung des Komponentenbaums . . . . . . . 38
4.1.2 U¨bernahme der Anfragewerte . . . . . . . . . . . . . . . 39
4.1.3 Validierung . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.1.4 Aktualisierung der Modellobjekte . . . . . . . . . . . . . 41
4.1.5 Aufruf der Anwendungslogik . . . . . . . . . . . . . . . 41
4.1.6 Rendern der Antwort . . . . . . . . . . . . . . . . . . . 42
4.2 Expression-Language . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.2 Bean-Properties . . . . . . . . . . . . . . . . . . . . . . 44
4.2.3 Vordefinierte Variablen . . . . . . . . . . . . . . . . . . 47
4.2.4 Vergleiche, arithmetische und logische Ausdru¨cke . . . . 49
4.2.5 Methodenaufrufe und Methodenparameter . . . . . . . . 52
4.2.6 Verwendung der Expression-Language in Java . . . . . . 53
4.3 Managed Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.1 Architekturfragen . . . . . . . . . . . . . . . . . . . . . 55
4.3.2 Automatische Verwaltung von Managed Beans . . . . . 56
4.3.3 Initialisierung . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3.4 Komponentenbindung . . . . . . . . . . . . . . . . . . . 64
4.3.5 Java-EE-5-Annotationen . . . . . . . . . . . . . . . . . . 68
4.3.6 JSF-Annotationen . . . . . . . . . . . . . . . . . . . . . 68
4.4 Validierung und Konvertierung . . . . . . . . . . . . . . . . . . 72
4.4.1 Standardkonvertierer . . . . . . . . . . . . . . . . . . . . 72
4.4.2 Konvertierung von Kalenderdaten und Zahlen . . . . . . 77
4.4.3 Konvertierung von Aufz¨ahlungstypen . . . . . . . . . . 81
4.4.4 Anwendungsdefinierte Konvertierer . . . . . . . . . . . . 84
4.4.5 Standardvalidierer . . . . . . . . . . . . . . . . . . . . . 87
4.4.6 Validierungsmethoden . . . . . . . . . . . . . . . . . . . 92
4.4.7 Anwendungsdefinierte Validierer . . . . . . . . . . . . . 94
4.4.8 Eingabekomponenten und das immediate-Attribut . . . 95
4.4.9 Bean-Validierung mit JSR 303 . . . . . . . . . . . . . . 98
4.4.10 Fehlermeldungen . . . . . . . . . . . . . . . . . . . . . . 105
4.5 Event-Verarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.5.1 JSF-Events und allgemeine Event-Verarbeitung . . . . . 115
Inhaltsverzeichnis VII
4.5.2 Action-Events . . . . . . . . . . . . . . . . . . . . . . . . 117
4.5.3 Befehlskomponenten und das immediate-Attribut . . . 121
4.5.4 Value-Change-Events . . . . . . . . . . . . . . . . . . . 122
4.5.5 Data-Model-Events . . . . . . . . . . . . . . . . . . . . . 127
4.5.6 Phase-Events . . . . . . . . . . . . . . . . . . . . . . . . 128
4.5.7 System-Events . . . . . . . . . . . . . . . . . . . . . . . 130
4.6 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.6.1 Implizite Navigation . . . . . . . . . . . . . . . . . . . . 134
4.6.2 View-to-View-Regeln . . . . . . . . . . . . . . . . . . . . 135
4.6.3 Regeln fu¨r mehrere Seiten . . . . . . . . . . . . . . . . . 138
4.6.4 Regeln fu¨r Action-Methoden . . . . . . . . . . . . . . . 139
4.6.5 Regeln zur bedingten Navigation . . . . . . . . . . . . . 139
4.6.6 Redirects . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.6.7 Verweise auf Nicht-JSF-Seiten. . . . . . . . . . . . . . . 141
4.6.8 View-Parameter und Lesezeichen . . . . . . . . . . . . . 143
4.6.9 Die technische Sicht . . . . . . . . . . . . . . . . . . . . 146
4.7 Internationalisierung . . . . . . . . . . . . . . . . . . . . . . . . 147
4.7.1 Lokalisierung . . . . . . . . . . . . . . . . . . . . . . . . 148
4.7.2 Dynamische und explizite Lokalisierung . . . . . . . . . 155
4.7.3 Klassen als Resource-Bundles . . . . . . . . . . . . . . . 156
4.7.4 Managed Beans und Lokalisierung . . . . . . . . . . . . 159
4.8 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
4.8.1 Die Servlet-Konfiguration . . . . . . . . . . . . . . . . . 161
4.8.2 Die JSF-Konfiguration . . . . . . . . . . . . . . . . . . . 170
4.8.3 XML-Konfigurationsdatei versus Annotationen . . . . . 179
4.9 Client-Ids und Komponenten-Ids . . . . . . . . . . . . . . . . . 180
4.9.1 Id-Arten und Namensr¨aume . . . . . . . . . . . . . . . . 180
4.9.2 Client- und server-seitige Programmierung mit Ids . . . 184
4.10 Verwendung allgemeiner Ressourcen . . . . . . . . . . . . . . . 187
4.10.1 Einfache Ressourcen . . . . . . . . . . . . . . . . . . . . 188
4.10.2 Versionierte Ressourcen und Ressourcen-Bibliotheken . 189
4.10.3 Positionierung von Ressourcen . . . . . . . . . . . . . . 191
4.11 JSTL-Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . 194
VIII Inhaltsverzeichnis
5 Die UI-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . 199
5.1 Die Standardkomponenten . . . . . . . . . . . . . . . . . . . . . 200
5.2 Render-S¨atze . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
5.3 Die JSF-Standard-Bibliotheken . . . . . . . . . . . . . . . . . . 204
5.4 Die HTML-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . 206
5.5 Die Kernbibliothek . . . . . . . . . . . . . . . . . . . . . . . . . 208
5.6 Die Facelets-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . 210
5.7 Die Composite-Component-Bibliothek . . . . . . . . . . . . . . 211
5.8 Die JSTL-Kern- und Funktionsbibliothek . . . . . . . . . . . . 212
6 Facelets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
6.1 Templating mit Facelets . . . . . . . . . . . . . . . . . . . . . . 215
6.2 Ein Template-Beispiel: UPN-Rechner . . . . . . . . . . . . . . . 218
6.3 Dynamische Templates . . . . . . . . . . . . . . . . . . . . . . . 223
6.4 Weitere Facelets-Tags . . . . . . . . . . . . . . . . . . . . . . . 225
6.5 Entwicklung eigener Komponenten . . . . . . . . . . . . . . . . 228
6.6 JSF-Tags als Attribute der Standard-HTML-Tags . . . . . . . . 234
7 Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
7.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
7.2 Die Grundlagen von Ajax in JSF 2.0 . . . . . . . . . . . . . . . 239
7.2.1 JSFs JavaScript-Bibliothek . . . . . . . . . . . . . . . . 240
7.2.2 Das <f:ajax>-Tag . . . . . . . . . . . . . . . . . . . . . 242
7.2.3 Das u¨berarbeitete Bearbeitungsmodell einer JSF-Anfrage 245
7.3 Weiterfu¨hrende Themen . . . . . . . . . . . . . . . . . . . . . . 247
7.3.1 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . 247
7.3.2 JavaScript mit Java . . . . . . . . . . . . . . . . . . . . 248
7.3.3 Nicht gerenderte Komponenten . . . . . . . . . . . . . . 250
7.3.4 Abgeku¨rzte Komponenten-Ids . . . . . . . . . . . . . . . 252
7.4 Ajax mit RichFaces . . . . . . . . . . . . . . . . . . . . . . . . . 253
7.4.1 Die <a4j:support>-Komponente . . . . . . . . . . . . . 254
7.4.2 Die <a4j:outputPanel>-Komponente . . . . . . . . . . 256
7.4.3 Die <a4j:region>-Komponente . . . . . . . . . . . . . 257
Inhaltsverzeichnis IX
7.4.4 Die <a4j:commandButton>- und <a4j:commandLink>-
Komponenten . . . . . . . . . . . . . . . . . . . . . . . . 259
7.4.5 Die <a4j:poll>-Komponente . . . . . . . . . . . . . . . 259
7.4.6 Die <a4j:log>-Komponente. . . . . . . . . . . . . . . . 260
7.5 RichFaces-Komponenten mit eingebauter Ajax-Unterstu¨tzung . 261
7.5.1 Drag and Drop . . . . . . . . . . . . . . . . . . . . . . . 262
7.5.2 B¨aume . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
7.5.3 Darstellung großer Datenmengen . . . . . . . . . . . . . 278
8 JavaServer Faces im Einsatz: Das Online-Banking . . . . . . 285
8.1 Der Seitenaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . 286
8.2 Das Gesch¨aftsmodell . . . . . . . . . . . . . . . . . . . . . . . . 289
8.3 Authentifizierung und Autorisierung . . . . . . . . . . . . . . . 292
8.3.1 Realisierung der Authentifizierung . . . . . . . . . . . . 293
8.3.2 Die Abmeldung . . . . . . . . . . . . . . . . . . . . . . . 295
8.4 Pflege der Stammdaten . . . . . . . . . . . . . . . . . . . . . . 296
8.5 U¨berweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
8.6 Anzeige aller Konten . . . . . . . . . . . . . . . . . . . . . . . . 303
8.7 Anzeige der Ums¨atze . . . . . . . . . . . . . . . . . . . . . . . . 306
8.8 Export der Ums¨atze im PDF- und Excel-Format . . . . . . . . 310
9 JavaServer Faces und Java-EE . . . . . . . . . . . . . . . . . . . 317
9.1 Java-EE 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
9.2 Java-EE 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
9.3 CDI und Weld . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
9.4 Konversationen mit CDI . . . . . . . . . . . . . . . . . . . . . . 327
9.5 Weitere Neuerungen in Java-EE 6. . . . . . . . . . . . . . . . . 333
9.5.1 Servlet 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . 333
9.5.2 Web-Profile . . . . . . . . . . . . . . . . . . . . . . . . . 334
9.5.3 Managed Beans . . . . . . . . . . . . . . . . . . . . . . . 335
9.6 Authentifizierung und Autorisierung mit JBoss Seam . . . . . . 336
10 Systeme und Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . 345
10.1 GlassFish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
X Inhaltsverzeichnis
10.1.1 Installation und Betrieb . . . . . . . . . . . . . . . . . . 346
10.1.2 Die Datenbank JavaDB . . . . . . . . . . . . . . . . . . 348
10.1.3 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . 350
10.2 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
10.2.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . 353
10.2.2 GlassFish-Plugin . . . . . . . . . . . . . . . . . . . . . . 354
10.2.3 JBoss Tools . . . . . . . . . . . . . . . . . . . . . . . . . 356
10.2.4 Projekte . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
10.3 Firebug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
10.4 Selenium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
10.4.1 Selenium-IDE . . . . . . . . . . . . . . . . . . . . . . . . 362
10.4.2 Selenium-RC . . . . . . . . . . . . . . . . . . . . . . . . 365
10.5 JSFUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
A Annotationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
A.1 JSF-Annotationen . . . . . . . . . . . . . . . . . . . . . . . . . 375
A.2 Annotationen fu¨r Managed Beans . . . . . . . . . . . . . . . . . 378
B Die Tags der Standardbibliotheken . . . . . . . . . . . . . . . . 383
B.1 HTML-Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . 384
B.2 JavaScript-basierte HTML-Attribute . . . . . . . . . . . . . . . 386
B.3 HTML- und JSF-Attribute fu¨r CSS . . . . . . . . . . . . . . . . 388
B.3.1 Regeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
B.3.2 Klassen- und Id-Selektoren . . . . . . . . . . . . . . . . 389
B.4 HTML-Tag-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . 390
B.5 Kernbibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
B.6 Facelets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
C URL-Verzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
Sachverzeichnis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Kapitel 2
Motivation
JavaServerFacessindalsTeilderSpezifikationenJava-EE5undJava-EE6un-
abdingbarer Bestandteil eines jeden entsprechenden Application-Servers. Die
beiden weiteren GUI-relevanten Spezifikationen innerhalb von Java-EE sind
Servlets und JavaServer Pages. Das Einsatzgebiet von Servlets ist jedoch die
Realisierung von Frameworks, wie JSF es eines ist, und nicht die Erstellung
kompletter Gesch¨aftsanwendungen. JavaServer Pages werden nicht mehr wei-
terentwickelt. JavaServer Faces sind also die einzige praxisrelevante Spezifika-
tion fu¨r die Entwicklung von Gesch¨aftsanwendungen innerhalb von Java-EE
undmu¨ssendahereigentlichnichtmotiviertwerden.Wirwollendieshiertrotz-
dem tun, um dem Leser bereits an dieser Stelle einen U¨berblick u¨ber einige
der herausragenden Eigenschaften von JSF zu geben.
2.1 Was sind JavaServer Faces?
JavaServer Faces u¨bernehmen nicht nur die Routineaufgaben, die in einer
Servlet- oder JSP-Anwendung zu programmieren sind. JavaServer Faces defi-
nieren ein Komponentenmodell fu¨r Benutzerschnittstellenelemente einer Web-
Anwendung, so wie Swing ein Komponentenmodell fu¨r lokale Oberfl¨achen de-
finiert. So existieren etwa Komponenten fu¨r die Texteingabe, zur Auswahl
von Menu¨-Eintr¨agen oder fu¨r die Anzeige von Fehlermeldungen. Diese Kom-
ponenten k¨onnen ganz analog zu Swing-Komponenten hierarchisch angeord-
net werden, indem man sie in Containern verschachtelt. Neue Komponenten,
z.B. ein Kalender, k¨onnen entwickelt und dann wie vordefinierte Komponen-
ten verwendet werden. JSF-Komponenten leben auf dem Server, sind in Java
programmiert und in einer Anwendung mit Java als Implementierungssprache
10 2 Motivation
verwendbar. Die als Antwort einer HTTP-Anfrage an einen Client geschick-
ten HTML-Seite (andere Antwortarten sind m¨oglich) stellen ein Abbild des
Komponentenbaums des Servers dar.
Bei der Entwicklung grafischer Benutzeroberfl¨achen (GUI, Graphical User In-
terface) hat sich das Model-View-Controller-Entwurfsmuster (MVC Pattern)
durchgesetzt. Es wird durch JavaServer Faces komplett realisiert. MVC trennt
streng zwischen Modell, View und Controller. Das Modell ist das Gesch¨afts-
modell der Anwendung. In ihm sind die fachlichen Klassen, etwa Kunde und
Rechnung, sowie die fachliche Logik enthalten. Die View ist ausschließlich fu¨r
die Darstellung verantwortlich, sie darf keine Anwendungslogik enthalten. Der
Controller ist schließlich die Instanz, die alle Steuerungsvorg¨ange der Oberfl¨a-
che mit dem Benutzer regelt und A¨nderungen des Benutzers in der View mit
demModellkonsistenth¨alt.Sieenth¨altdamitzumeinendieOberfl¨achenlogik,
etwa Knopf A kann nur gedru¨ckt werden, wenn im Eingabefeld B ein Wert
”
gr¨oßer 100 steht“, aber auch die entsprechenden Methoden, um die Eingabe
einer neuen Kundenadresse bis zum Modell durchzureichen.
Bei JavaServer Faces ist das Modell beliebig w¨ahlbar. POJOs (Plain Old Java
Objects), EJBs (Enterprise JavaBeans) oder beliebige andere Java-Objekte
sindm¨oglich.DieViewistebenfallsnichtfestgelegt.ZwargibtdieSpezifikation
als m¨ogliche Realisierung HTML vor, d.h. jede JSF-Implementierung muss
mindestens eine HTML-View bereitstellen, andere, etwa WML oder Flash,
sind aber ebenfalls denkbar und m¨oglich. Der Controller wird in JSF zum
einen durch die schon erw¨ahnten Komponenten realisiert, zum anderen durch
so genannte Handler, die in Java zu realisieren sind.
Es l¨asst sich trefflich daru¨ber streiten, ob die Komponenten nicht zur View
geh¨oren. Sind nicht sie es, die Eingabefelder und Kn¨opfe darstellen? Dies ist
einerseits sicher richtig, andererseits sieht der Benutzer aber nicht die Kom-
ponente an sich, sondern die aus der Komponente generierte Darstellung, die
sich z.B. im Web und auf dem Handy sehr unterscheiden kann. Hinzu kommt,
dass in der Komponente angegeben wird, ob sie u¨berhaupt darzustellen ist,
und, wenn ja, ob sie fu¨r Benutzeraktionen empf¨anglich ist.
2.2 JavaServer Faces und Zukunftssicherheit
Der Java-Community-Process (JCP [URL-JCP] ) wurde 1998 ins Leben geru-
fen, um Spezifikationen der Java-Plattform zu entwickeln und fortzuschrei-
ben. Sun versuchte damit die Furcht vieler Firmen vor einer monopolisti-
schen und undemokratischen Definiton der Java-Plattform zu entkr¨aften. Mit-
glieder k¨onnen Personen und Firmen werden, die dann bei der Entwicklung
2.3 Neuerungen in JavaServer Faces 2.0 11
und Fortschreibung von Java-Specification-Requests (JSR) mitarbeiten k¨on-
nen. Ein Java-Specification-Request ist eine Spezifikation fu¨r einen Teil der
Java-Plattform. Im Augenblick sind mehrere Hundert Personen und Firmen
Mitglieder des JCPs. Zu den Firmen geh¨oren praktisch alle großen Software-
H¨auser.
Im Jahr 2001 wurde der JSR-127 initiiert, der die JSF-Spezifikation zum In-
halthat. Neben einigen Privatpersonen waren Firmen und Organisationen wie
die Apache Software Foundation, BEA Systems, Borland, Fujitsu, Hewlett-
Packard, IBM, ILOG, IONA Technologies, Macromedia, Novell, Oracle, Sie-
mens und Sun beteiligt, um einige zu nennen. Diese breite Unterstu¨tzung
macht klar, welchen Stellenwert JavaServer Faces haben.
Im M¨arz 2004 wurde das final Release der JSF-Spezifikation 1.0 ver¨offentlicht.
Die Java-2-Enterprise-Edition, die unter anderem Servlets, JavaServer Pages
und Enterprise-JavaBeans umfasst, wurde in der Version 1.4 im November
2003, also vor der JSF-Spezifikation, ver¨offentlicht. Sie konnte JavaServer Fa-
ces daher nicht enthalten. Die Version 1.5 (nach neuer Sprach- und Z¨ahlweise
Java-EE 5) wurde im Mai 2006 freigegeben. Die Java-EE-Spezifikation um-
fasst JavaServer Faces in der Version 1.2. Dies bedeutet, dass alle Hersteller
von Java-EE-Application-Servern JavaServer Faces unterstu¨tzen mu¨ssen, um
spezifikationskonformzusein.Esistunzweifelhaft,dassdieseinweitererSchub
fu¨r die Verbreitung von JavaServer Faces war. Im Dezember 2009 wurde Java-
EE 6 ver¨offentlicht, in der JSF 2.0 enthalten ist.
2.3 Neuerungen in JavaServer Faces 2.0
Der Sprung in der Versionsnummer von JSF 2.0 ist durch eine große Zahl von
Neuerungen, Erweiterungen und A¨nderungen begru¨ndet. Zu den grundlegen-
den Themenbereichen dieser Art geh¨ort sicher die Festlegung auf Facelets als
Standardseitenbeschreibungssprache und die Integration von Ajax, d.h. die
M¨oglichkeit, u¨ber ein definiertes JavaScript-API Teilbereiche einer Seite zu
aktualisieren und eine erh¨ohte Benutzerinteraktivit¨at zu erm¨oglichen. Viele
andere Neuerungen, Erweiterungen und A¨nderungen, die wir aufz¨ahlen ohne
eine Gewichtung vornehmen zu wollen, flossen ebenfalls ein: Die M¨oglichkeit
derVerwendungvonAnnotationen statteinerXML-Konfiguration;dieMittei-
lungu¨berbestimmteJSF-Laufzeit-EreignissedurchSystem-Events;eineeinfa-
che M¨oglichkeit zur Definition zusammengesetzter Komponenten (Composite
Components);erweiterteM¨oglichhkeitenzurValidierung,unteranderemdurch
die eigenst¨andige Spezifikation Bean-Validation; eine Steigerung der Effizienz
Description:und, wenn ja, ob sie für Benutzeraktionen empfänglich ist. 2.2 JavaServer Faces und Zukunftssicherheit. Der Java-Community-Process (JCP [URL-JCP] ) wurde