JAXenter.de

Das Portal für Java, Architektur, Cloud & Agile

Was ist neu in JSF 2.1

X

Vorfreude auf Java 9: Die ersten Features sind bekannt.

Was ist neu in JSF 2.1

Claudia Fröhling

Am 21. November 2010 zwitscherte es über Twitter: JSF 2.1
ist erschienen
. Die Resonanz war erwartungskonform sehr "überschaubar",
da es sich lediglich um ein Maintenence Release handelte. Doch was
bringt dieses kleinere Update?

Mit JSF 2.0 wurde im Sommer 2009 ein recht umfangreiches Major-Release
von JSF freigegeben. Darin waren viele Neuerungen und zum Teil auch
gravierende Änderungen in der Spezifikation enthalten.

Daher war nicht zu erwarten, dass innerhalb so kurzer Zeit nochmals
eine große Erweiterung kommt. Vielmehr haben sich auf der Basis von
JSF 2.0 einige Fragestellungen ergeben, die mit dem Maintenence Release
2.1 klargestellt wurden. Auch an ein paar Stellen, an denen die 2.0 Spezifikation
nicht deutlich genug war, wurde nachgearbeitet.

Eine erste "Klarstellung" seitens der neuen Spezifikation ist die
Behandlung von Namespaces ohne Prefix. Dieser Namespace wird ohne weitere
Prüfungen oder Veränderungen einfach durchgereicht. In der Spec ist folgendes
Beispiel erwähnt (gekürzt wiedergegeben):

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msup>
<msqrt />
</msup>
</math>
</html>  

Hier finden keine weitere Checks statt, sondern das XHtml wird lediglich
weitergegeben. Dies ist an sich jetzt nichts Besonders, hat sich Facelets
vor JSF 2.1 bereits so verhalten. Jetzt ist nunmehr der betreffende Part
in der Spezifikation klargestellt worden.

Eine tatsächliche Neuerung ist die Erweiterung der Schema-Definition um das
Tag "facelets-processing" im Abschnitt "faces-config-extension". Was sich zunächst
nicht besonders gravierend anhört, zieht jedoch einige interessante Punkte nach
sich. Bereits mit JSF 2.0 hat die View Declaration Language (VDL) Einzug in die
Spezifikation genommen. Es wurde eine Abstraktion für die Beschreibung der
verschiedenen Views eingeführt. Basierend auf dieser abstrakten VDL kann es
mehrere konkrete Implementierungen geben. JSP war eine Möglichkeit, Facelets
eine andere. Gerade letztere Möglichkeit gibt es nun in verschiedenen
"Geschmacksrichtungen": Facelets XHtml, Xml Modus und Facelets JSPX. Damit soll
der Übergang von Projekten, die noch auf JSPX beruhen, vereinfacht werden.

Konkret bedeutet dies, dass z.B. bestehende JSPX-Dateien über den Mechanismus von
Facelets verarbeitet werden können und nicht mehr als JSP-Dateien interpretiert
werden (und damit von JPSs zu Servlets werden). Um dies zu realisieren, ist
in der faces-config.xml folgende Ergänzung dazugekommen:

<faces-config-extension>
<facelets-processing>
<file-extension>.jspx</file-extension>
<process-as>jspx</process-as>
</facelets-processing>
<facelets-processing>
<file-extension>.view.xml</file-extension>
<process-as>xml</process-as>
</facelets-processing>
</faces-config-extension>  

In der web.xml können ebenfalls weitere Parameter angegeben werden:

<context-param>
<param-name>javax.faces.FACELETS_VIEW_MAPPINGS</param-name>
<param-value>*.xhtml;*.view.xml;*.jspx</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml .view.xml .jsp .jspx</param-value>
</context-param>  

Über diese Einstellungen kann gesteuert werden, dass Dateien mit den
Endungen *.xhtml, *.view.xml, *.jspx an Facelets zur Verarbeitung übergeben
werden. "Klassische" JSP-Dateien werden weiterhin als JSPs behandelt.

Weitere Änderungen betreffen hauptsächlich Klarstellungen und Detaillierungen,
die vorwiegend für Implementierer der Spezifikation massgeblich sind. Für einen
Anwendungsentwickler ist zumindest der Vorteil dadurch gegeben, dass man sich sicher sein kann, dass Implementierungen mit dem Label "spezifikationskonform" sich gleich
verhalten, da die Spezifikation sehr exakt erstellt wurde und kaum Raum für
individuelle Interpretationen lässt.

Es wurden noch einige weitere Punkte in der Expert Group diskutiert, alles konnte
aus Zeitgründen jedoch nicht mehr in 2.1 aufgenommen werden. Doch JSF 2.2 steht
schon in den Startlöchern, die Arbeit an der JSF-Spezifikation geht somit naht- und
rastlos weiter.

Andy Bosch (andy.bosch[at]jsf-forum.de) ist unabhängiger Berater und Trainer für JavaServer Faces und Portlets. Er ist Autor verschiedener Fachbücher rund um JSF und Sprecher auf nationalen und internationalen Konferenzen. Zudem betreibt er das deutschsprachige Forum zu JSF unter www.jsf-forum.de.

Verwandte Themen: 

Kommentare

Ihr Kommentar zum Thema

Als Gast kommentieren:

Gastkommentare werden nach redaktioneller Prüfung freigegeben (bitte Policy beachten).