Composite Components mit insert children und Facetten individualisieren

Mit Composite Components hat man die Möglichkeit, wiederverwendbare Komponenten wie z.B. Loginmaske zu schreiben. Doch manchmal kann man trotzdem nicht alles in eine Komponente reinpacken, da es je nach Anwendung kleine Unterschiede gibt.

Was kann man also tun, damit man trotzdem wiederverwendbare Komponenten mit geringem Aufwand individualisieren kann?

JSF bietet insertChildren und f:facet an, um Teile von Composite Components vom aussen zu konfigurieren.

Schauen Sie sich dazu die Facet and Insert Children Demo im Forms Demo Projekt an das unter http://xpert-ivy-hacker-source-code.googlecode.com/svn/trunk/Forms ausgecheckt werden kann.

Code-Snippet 1: Ivy Composite Component

Code-Snippet 2: Composite Component konfigurieren

insertChildren

Mit insertChildren werden alle Elemente die innerhalb des Composite Components definiert werden, direkt in den Composite Component eingefügt. Ein tolles Beispiel ist die p:dataTable die als Kinder p:column entgegennimmt.

Um diese Kinder innerhalb eines Composite Components anzeigen zu können, kann man einfach cc:insertChildren (Code-Snippet 1, Zeile 15) verwenden. Im Beispiel wird das p:outputLabel und das p:inputText als Kind eingefügt (Code-Snippet 2, Zeilen 9 und 10).

Facetten

Facetten funktionieren ähnlich wie insertChildren. Der Unterschied ist, dass sie Namen haben und man sie mit f:facet einfügen muss. Des Weiteren muss man die Facetten im Interface angeben und es gibt 2 Möglichkeiten Facetten innerhalb des Composite Components zu rendern.

Die erste ist cc:renderFacet (Code-Snippet 1, Zeile 8). Sie rendert den Inhalt von f:facet direkt und hat somit den selben Effekt wie cc:insertChildren.

cc:insertFacet wird nicht direkt im Composite Component gerendert, sondern in der Komponente, in der cc:insertFacet aufgerufen wird als Facette mitgegeben. Im Beispiel geben wird die header und footer Facette der p:panelGrid mitgegeben und dort gerendert (Code-Snippet 1, Zeilen 11 und 13).

Fazit

Facetten und insertChildren sind tolle Werkzeuge, um Composite Components von Fall zu Fall einfach individualisieren zu können.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.