Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Programmieren von Webanwendungen

Komponentenbibliotheken

Komponentenbibliotheken

Jede in JSF verfügbare Komponente wird zur Anzeige im Browser in HTML-Code übersetzt und übertragen. Für jeden Tag ist in der JSF-Bibliothek eine Klasse definiert, deren Objekte für die Transformation in HTML-Code verantwortlich sind. Ddie folgende Abbildung zeig am Beispiel, wie einzelne JSF-Komponenten im ausgelieferten Seiten-Quelltext erscheinen.
Abbildung: Abbildung von JSF-Tags auf HTML-Quelltext und Darstellung im Browser

Die Menge an generiertem HTML-Quelltext für die Darstellung einer Komponente ist nicht begrenzt. Komplexe Komponenten generieren entsprechend viel HTML-Quelltext.

Der JSF-Mechanismus, der die Komponenten in HTML-Quelltext übersetzt, ist nicht nur exklusiv den JSF-Komponenten vorbehalten. Entwickler können weitere Komponenten definieren und implementieren, um damit weitere Komponenten für die Oberflächengestaltung von Web-Anwendungen anzubieten. Eine Sammlung solcher Komponenten wird Komponentenbibliothek genannt. Eine Komponentenbibliothek wird wie eine normale Java-Bibliothek als jar-Datei zur Verfügung gestellt und in ein eigenes Projekt eingebunden. Sie enthält Komponentenklassen, die für die Generierung des benötigten HTML-Quelltextes zur Laufzeit verwendet werden.
Abbildung: Komponentenbibliotheken werden als Java-Bibliotheken ausgeliefert

Bevor die neuen Komponenten auf den Views verwendet werden können, muss man diese dort importieren. Man gibt zu diesem Zweck den speziell für die jeweilige Komponentenbibliothek definierten XML-Namensraum im umgebenden <html>-Element an. Die folgende Abbildung zeigt, wie man den PrimeFaces-Namensraum "http://primefaces.org/ui" unter dem Namen p importiert.
Abbildung: Importieren von XML-Namensräumen

XML-Namensräume ermöglichen auf diese Weise, dass die Eindeutigkeit von Komponenten auch bei der Verwendung von weiteren externen Komponenten gewahrt bleibt. Jede Komponente muss mit dem bei der Importierung vergebenen Namen referenziert werden, sodass eine eindeutige Zuordnung getroffen werden kann. So können auf einer View zum Beispiel dataTable-Komponenten aus unterschiedlichen Komponentenbibliotheken verwendet werden, um unterschiedliche Effekte zu erreichen. Über das Namenspräfix wird festgelegt, in welcher Bibliothek die jeweilige dataTable definiert wurde.