JSF 2.2 – Quo vadis?

File Upload

Bisher gab es in JSF keine Komponente für File Uploads, was an der mangelnden Unterstützung für multipart/form-data in der Servlet-Spezifikation (älter als Version 3.0) lag. Ab Servlet-Version 3.0 (die seit JSF 2.1 unterstützt wird) wird dieser Mangel behoben. In JSF 2.2 plant man, eine File-Upload-Komponente einzuführen, die mittels definiert wird. Die Komponente soll einen File Upload sowohl in reinem HTML als auch mithilfe von JavaScript unterstützen. Eine weitere Anforderung an diese Komponente ist deren Einsatz innerhalb von Portlets. Die Verwendung des neuen -Tags sieht wie folgt aus:


Faces Flows

Die Faces Flows sind ein Feature, welches hauptsächlich von den ADF Task Flows und Spring WebFlow inspiriert wurde. In JSF spielt die View (auch Page genannt) eine zentrale Rolle, jedoch ist es häufiger der Fall, dass mehrere Views einen logischen Zusammenhang bilden können. Es gab vor JSF 2.2 keine Möglichkeit mehrere Views modular zu einer logischen Einheit zusammenzufassen, was zu einer relativ monolithischen Anwendungsstruktur führen kann. Dies macht gerade größere JSF-Anwendungen zu komplexen unstrukturierten Gebilden. Dieses Problem lösen die so genannten Faces Flows. Ein Faces Flow definiert dabei eine Menge von Flow Nodes, die unterschiedlichen Typs sein können. Ein Node kann z. B. eine View/Page sein, ein Methodenaufruf, ein NavigationRuleSet oder aber ein weiterer Faces Flow. Flow Nodes sind über Kanten miteinander verbunden, die auch Control Flow Cases genannt werden. Weiterhin gibt es Control Flow Rules, die die Regeln für die Übergänge von einem Node auf den nächsten beschreiben. Ein Bounded Faces Flow ist ein spezieller Faces Flow mit der zusätzlichen Eigenschaft, einen Einstiegspunkt und 0 bis n Ausgangspunkte zu definieren. Insgesamt lässt sich mithilfe dieser Konzepte Kontrollfluss über mehrere Seiten hinweg beschreiben, was u. a. die Implementierung von Verhaltensbeschreibungen, wie man sie z. B. bei UML-Aktivitätsdiagrammen findet, erleichtert.

Weitere Neuerungen

UIData-Komponenten wie z. B. die HTMLDataTable unterstützen neuerdings auch das Collection Interface. Vorher musste man Sets zunächst in eine List umwandeln, um diese fehlerfrei in einer Data Table anzeigen zu können. Der Tag erhält ein neues Attribut delay, welches die Verzögerungszeit für clientseitiges AJAX Request Queuing spezifiziert. Werden mehrere AJAX Requests in diesem Zeitraum gesendet, wird nur der letzte an den Server geschickt. Der Sinn dieses Queuings ist es, den Server zu entlasten und z. B. Responses, die in der falschen Reihenfolge beim Client ankommen, zu vermeiden.

Fazit

Mit Version 2.2 werden einige wichtige Neuerungen in die JSF-Welt gebracht. Während einige Features wie View Actions schon in der Praxis erprobt sind und somit schnell spezifiziert werden konnten, sind wichtige Beiträge wie Faces Flows und Multi-Templating noch in den letzten Zügen der Spezifikationsphase. Dieser Artikel hat den momentanen Stand der Entwicklung von JSF 2.2 aufgezeigt und die wichtigsten Neuerungen herausgearbeitet. Final werden sich sicherlich noch Teile ändern, die „großen“ Ideen werden aber zum überwiegenden Teil erhalten bleiben.

Benjamin Schmeling arbeitet als Forscher im Bereich Web Services und modellgetriebener Softwareentwicklung bei SAP Research Darmstadt. Er erwarb sein Diplom in Informatik an der Technischen Universität Darmstadt und promoviert im Fachgebiet Softwaretechnik. Seine Forschungsschwerpunkte liegen in der Modellierung, Komposition und Durchsetzung von nichtfunktionalen Anforderungen für Web Services und Web-Service-Kompositionen.

Steffen Heinzl arbeitet als IT-Architekt bei T-Systems und ist Autor des Buches „Middleware in Java“. Nach seiner Promotion an der Philipps-Universität Marburg war er als Forscher bei SAP Research tätig und u. a. an Entwicklungen für SAP Netweaver Neo beteiligt. Seine Forschungs- und Entwicklungsinteressen liegen in den Bereichen Cloud, Mobile und Web Services.
Kommentare

Schreibe einen Kommentar

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