Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Programmieren von Webanwendungen

Komponentenbibliotheken

PrimeFaces

Zu den bekanntesten Komponentenbibliotheken gehört die PrimeFaces-Komponentenbibliothek. Sie wird seit 2008 von PrimeTek als Open-Source-Framework entwickelt und angeboten.

Der für die PrimeFaces-Komponenten definierte Namensraum lautet http://primefaces.org/ui. Es muss daher eine weitere Namensraumdeklaration zum umfassenden <html>-Element hinzugefügt werden. Mittels xmlns:p= vergibt man das Kürzel p, um im Anschluss die neuen Tags in einer View benutzen zu können.
Abbildung: Importieren des PrimeFaces-Namensraumes

Als erste PrimeFaces-Komponente soll die Kalenderkomponente verwendet werden. Man fügt sie mittels <p:calendar/> zu einer View hinzu (siehe folgende Abbildung). Die Kalenderkomponente muss stets in einem <h:form>-Element eingebettet sein, damit das ausgewählte Datum für eine weitere Verwendung mit an den Server gesendet wird.
Abbildung: Verwenden von PrimeFaces-Komponenten mittels des p:-Namensraumes

Wird die neue View im Browser aufgerufen, bekommt man eine komplexe funktionsfähige Kalenderkomponente präsentiert (siehe folgende Abbildung). Man kann die einzelnen Kalenderblätter mit den Schaltflächen weiterschalten, die Komponente aktualisiert die Darstellung entsprechend. Nach einem Klick auf ein Datum erscheint eine textuelle Repräsentation im Eingabefeld.
Abbildung: Ansicht der Kalenderkomponente

Die Kalenderkomponente soll nun dazu verwendet werden, um für die Artikel im Online-Shop ein Verfügbarkeitsdatum einzutragen. Auf diese Weise könnte man Artikel in den Shop aufnehmen, ohne dass sie den Besuchern sofort präsentiert werden. Es ist daher die Modell-Klasse Artikel anzupassen und um ein Attribut für das Verfügbarkeitsdatum zu ergänzen. Die folgende Abbildung fasst die vorgenommenen Änderungen zusammen. Als Standardwert für das Verfügbarkeitsdatum wird ein Zeitpunkt weit zurück in der Vergangenheit gewählt (new Date(0)).
Abbildung: Anpassungen in der Klasse Artikel

Als Nächstes wird die bisherige View erweitert, um das neue Attribut mittels der PrimeFaces-Kalenderkomponente in der Übersichtstabelle Artikel darzustellen. Die folgende Abbildung zeigt, wie der Attributwert mittels eines UEL-Ausdrucks mit der Kalenderkomponente verknüpft wird. Die notwendige Konvertierung von einem Datum in eine Zeichenkette führt PrimeFaces selbstständig durch.
Abbildung: Verknüpfung von Kalenderkomponente und Datumsattribut

Nach diesen Anpassungen wird für jeden Artikel das jeweilige Verfügbarkeitsdatum eingeblendet (siehe folgende Abbildung). Das mit new Date(0) initialisierte Datum wird als 01.01.70 angezeigt.
Abbildung: Ansicht der verknüpften Kalenderkomponente

Die Formatierung des Datums lässt sich anpassen. Man verwendet dazu das Formatierungsattribut pattern der Kalenderkomponente, um das Jahr bei der Datumsangabe voll auszuzeichnen. Die folgende Abbildung zeigt, wie man die für die Formatierung von Date-Objekten bekannten Kürzel verwendet.
Abbildung: Formatierung von Datumsangaben mittels datePattern

Die Kalenderkomponente lässt sich so frei konfigurieren.

Die Kalenderkomponente ist eine von mehreren Eingabekomponenten, mit denen sich Daten auf Webseiten darstellen und verändern lassen. PrimeFaces bietet darüber hinaus eine Editorkomponente an, mit der sich Text nicht nur in Reinform eintippen, sondern gleich auch formatieren lässt. Die folgende Abbildung zeigt die entsprechende <p:editor>-Komponente in einer View.
Abbildung: Verwendung und Darstellung der PrimeFaces-Editorkomponente

Als Beispiel soll man in der Editorkomponente nur Text eingeben, einfache Formatierungen (fett gedruckt, kursiv) vornehmen, Listen erstellen und Links erzeugen können. Die Editorkomponente bietet aber in der Grundeinstellung noch weitere Möglichkeiten. Mittels des controls-Attributs lässt sich exakt einstellen, welche Funktionen sichtbar sind. Die Einstellung controls="bold italic bullets numbering link unlink" sorgt dafür, dass nur ein Teil der Gestaltungsmöglichkeiten im Editor sichtbar sind.
Abbildung: Vollständiger Funktionalitätsumfang der Editorkomponente

Die Editorkomponente lässt sich noch weiter konfigurieren. Die dafür notwendigen Attribute findet man in der entsprechenden Online-Dokumentation.

Für die Eingabe von Zahlenwerten, die in einem bestimmten Wertebereich liegen, bietet PrimeFaces die Komponenten p:slider und p:spinner. Über die Attribute dieser Elemente legt man den Wertebereich und die Schrittgröße bzw. Genauigkeit der auszuwählenden Zahl fest. Wie in der folgenden Abbildung gezeigt verwenden wir einen Spinner und einen Slider für die Auswahl einer Jahreszahl. Ein solcher Slider eignet sich auch besonders für Werte mit Nachkommastellen, da man sie wie an einem Zalenstrahl mit nur einem Klick auswählen kann.
Abbildung: Eingabe von Zahlen aus einem vorgegebenen Wertebereich

Um Elemente auf einer Seite zu gruppieren und zusammenzufassen, bietet PrimeFaces die sogenannten Panels. Mittels Panels werden Komponenten gruppiert, sodass sie gemeinsam auf der Oberfläche positioniert werden können. Die folgende Abbildung zeigt ein Panel, das zwei weitere Komponenten aufnimmt und mit einem Rahmen versehen darstellt.
Abbildung: Ein Panel gruppiert mehrere Komponenten

Besondere Panel-Arten sind das TabView und das AccordionPanel. Sie gruppieren, genau wie das normale Panel, eine Menge von Elementen, erlauben aber zusätzlich das Umschalten per Mausklick zwischen verschieden Gruppierungen. TabView und AccordionPanel unterscheiden sich weiterhin in der Darstellung. Das TabView zeigt für jede umschaltbare Gruppe einen Tab an und ordnet die Tabs horizontal. Das AccordionPanel stellt die Gruppen vertikal geordnet dar. Die folgende Abbildung zeigt die beiden Ansichten und den entsprechenden Quellcode in der Übersicht.
Abbildung: TabView und AccordionPanel

PrimeFaces bietet eine <p:dataTable>-Komponente, die die aus JSF bekannte DataTable um weitere Funktionalität ergänzt. Sie ist ebenfalls an eine Collection geknüpft und erzeugt für jedes einzelne Element der Collection eine eigene Tabellenzeile. In der folgenden Abbildung wird die Tabelle an ein Shop-Sortiment gebunden. Über <facet>-Elemente steuert man die Anzeige von Tabellen- und Spaltenüberschriften.
Abbildung: PrimeFaces-DataTable-Komponente