JSF 2.2 ist durch: Ein Blick auf die neuen Java Server Faces

Hartmut Schlosser

Die letzte Hürde für JSF 2.2 wurde mit der offiziellen Annahme der Spezifikation durch den JCP genommen. Im Final Approval Ballot gab es unter den 30 Mitgliedern des Exekutiv-Komitees keine Gegenstimmen – lediglich zwei Nicht-Stimmabgaben durch Azul Systems und Nokia sowie zwei „erzwungene“ Enthaltungen wurden registriert (das Stimmrecht wurde Stefano Andreani und Google vorübergehend entzogen, da beide Mitglieder den verpflichtenden Treffen fern geblieben waren).

Die Neuerungen in JSF 2.2 wurden von Projekt Lead Ed Burns in 6 „Big Tickets“ aufgeteilt. Wir werfen einen kurzen Blick auf die neuen Features:

1. HTML5-friendly Markup-Support: Mit JSF 2.2 können Entwickler neue Elemente des HTML5-Standards verwenden, ohne eine spezielle JSF Komponenten Library nutzen zu müssen. Standardmäßig wird der HTML5-Doctype aus XHTML-Seiten generiert.

2. FacesFlows: An Vorbildern wie Spring Web Flow oder ADF Task Flows orientiert, soll es in JSF 2.2 möglich werden, wiederverwendbare und abgeschlossene Seiten-Flows zu bauen. Faces Flows ermöglichen es, mehrere Views modular zu einer logischen Einheit zusammenzufassen. Ein typisches Anwendungsgebiet sind Wizards, die eine in sich geschlossene Abfolge von Seiten haben und eventuell innerhalb dieses Ablaufs eigene Daten (also Beans) benötigen. Im Zusammenhang mit diesen Flows wird auch ein neuer Scope – der FlowScope – eingeführt, der sich nahtlos in das gesamte Konzept integriert.

3. Cross-site Request Forgery Protection: Hier geht es um die Verbesserung der Sicherheit von Webanwendungen. Es wird ein neuer Mechanismus eingeführt, um eine Seite gegen sogenanntes Cross Site Request Forgery (CSRF/XSRF) zu schützen – eine Sicherheitslücke, die die Zustandslosigkeit des HTTP-Protokolls ausnutzt, die es erforderlich macht, Cookies bei jedem HTTP Request mitzuschicken.

4. Das Laden von Facelets über den ResourceHandler: Hierfür wird das API im ResourceHandler erweitert. In JSF 2.2 kann zudem eine eigene FaceletFactory definiert werden, wodurch es möglich wird, konfigurativ oder programmatisch eine eigene FaceletFactory für die Erzeugung von Komponenten zu verwenden.

5. File Upload: Eine neue Standardkomponente in JSF wird ein FileUpload sein. Gab es bislang verschiedene solche Komponenten von Drittanbietern, hat man nun im JSF-Standard bereits die Möglichkeit, einen Fileupload zu realisieren. Der JSF-Fileupload nutzt die Basis, die mit Servlet Version 3 gelegt wurde. Es wird beim Upload in einem Managed Bean ein javax.servlet.http.Part-Objekt bereitgestellt, an dem ein Stream abgeholt werden kann.

6. Multi-Templating bzw. Resource Library Contracts: Hier geht es darum, eine größere Flexibilität in der Verwendung von View-Templates zu schaffen. In JSF 2.2 wurde zunächst eine etwas „abgespeckte“ Version des ursprünglich geplanten Multi-Templating eingeführt. Definiert wird ein System namens „Resource Library Contracts“, mit dem wiederverwendbare Facelet Templates auf eine komplette Applikation angewandt werden können. In der offiziellen Spezifikation heißt es dazu:

JSF defines a system called „resource library contracts“ for applying facelet templates to an entire application in a re- usable and interchangeable manner. The feature is built on top of the resource library facility […]. A configurable set of Facelet VDL views in the application will be able to declare themselves to be template-clients of any template in a resource library contract.

Die komplette Spezifikation kann unter http://jcp.org/en/jsr/detail?id=344 eingesehen werden. Als weiterführende Ressourcen empfehlen wir:

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.