Die Intersult Taglib ist eine Facelet-Taglib mit einigen nützlichen Tags für die Entwicklung von JEE-Applikationen unter JSF und Seam. !Meta Component Der wohl interessanteste Tag in der Intersult Bibliothek com.intersult.ui ist die Facelet-Meta-Component. Was ist eine Meta-Component? Das ist eine Component zur Konstruktion eigener Components mittels einer Taglib. Der Bau eigener Komponenten wird damit zum Kinderspiel, da in der Regel kein Java-Code mehr geschrieben werden braucht. !Beispiel Infobox Als Aufgabenstellung soll ein Facelet gebaut werden, das auf einer XHTML-Seite wie folgt eingebaut werden kann: {{{ <i:info id="info" value="Dies ist die Infobox"/> }}} Die Implementierung erfolgt als Facelet in der Datei info.xhtml: {{{ <ui:composition> <i:meta useId="#{id}" var="comp" rendered="#{empty rendered or rendered}"> <s:graphicImage id="#{comp.id}" url="#{empty img ? '/images/information.png' : img}" onmouseover="$('#{comp.clientId}-text').style.display = '';" onmouseout="$('#{comp.clientId}-text').style.display = 'none';"/> <s:span id="#{comp.id}-text" style="display: none; position: fixed; background-color: yellow; padding: 3px;"> <h:outputText value="#{value}"/> </s:span> </i:meta> </ui:composition> }}} Was passiert hier? Der meta-Tag generiert eine Component-Id und stellt diese unter der unter ''var'' angegebenen Variable (hier ''comp'') zur Verfügung. Diese Variable hat zwei Properties: * __id__ Innerhalb des meta-Tags kann hier eine Id abgerufen werden und als Zuweisung für eine andere Komponente verwendet werden. Diese Id darf natürlich nur einmal verwendet werden, da die im Component-Tree von JSF eindeutig sein muss. Werden mehrere Ids gebraucht, können diese mit #{comp.id}-suffix erzeugt werden. Die Id wird von JSF generiert, falls von außen keine Id mit ''useId'' übergeben wurde. Im Gegensatz zum Zuweisen normaler Ids darf useId="#{id}" benutzt werden, auch wenn die Variable 'id' nicht zugewiesen oder einen Leerstring enthält. Der meta-Tag arbeitet dann ganz normal mit der generierten Id. * __clientId__ Innerhalb des meta-Tags kann hier die clientId, als die im HTML-Code tatsächlich heraus generierte Id abgefragt werden. Dies wird vom JavaScript-Code gebraucht. !Manuelle Installation Folgende Bibliotheken sind im Stand vom 07.06.2009: * [Intersult Taglib/com.intersult.ui-1.0-20090607.204442-8.jar] * [Intersult Taglib/com.intersult.util-1.0-20090607.204442-7.jar] * JBoss Seam 2.1.2.CR2 * Richfaces 3.3.0.GA * Facelets 1.1.15.B1 * JSF API/IMPL 1.2_12 * Tomahawk 1.1.8 * Servlet API 2.5 * JSP API 2.0 * Apache commons-lang 2.1 * Apache commons-collections 3.2 * Apache commons-beanutils 1.6 !Maven2 Build Wesentlich einfacher gestaltet sich der Build mit [Maven2|http://maven.apache.org/]: {{{ <project> ... <dependencies> ... <dependency> <groupId>com.intersult</groupId> <artifactId>com.intersult.ui</artifactId> <version>1.0-SNAPSHOT</version> </dependency> ... </dependencies> ... <repositories> ... <repository> <id>intersult-repository</id> <name>Intersult Repository</name> <url>http://repository.intersult.com/repository</url> </repository> ... </repositories> ... </project> }}}