Diese [JSF]-Erweiterung ermöglicht es, einfache [Javascript] und [JQuery|https://de.wikipedia.org/wiki/JQuery] Komponenten JSF-Konform zu implementieren. [JSF-JQuery] enthält zwar einige fertig einsatzfähige Komponenten, versteht sich allerdings vorwiegend als [API|https://de.wikipedia.org/wiki/API] zum Implementieren eigener Komponenten. !!!Zusammenfassung Der Vorteil von [JSF] besteht in der Möglichkeit, mit XHTML arbeiten zu können und die Web-Seite hochgradig in Komponenten strukturieren zu können. Die Anbindung an Controller durch EL-Expressions erlaubt einfache Interaktionen mit [Java]-Code. Der Nachteil von [JSF] besteht jedoch in einem Aufwendigen Rekonstruieren der gesamten Seitenstruktur. Gerade bei komplexen Web-Seiten führt dies zu einer immensen Rechenzeit, sowieso hohem Speicherverbrauch. Reine [Javascript]-Komponenten haben den Vorteil, dass die Elemente auf der Web-Seite sehr unabhängig voneinander agieren können. Änderungen, Server-Requests und andere Aktionen sind daher sehr leichtgewichtig. Allerdings liefert JQuery und andere [Javascript]-Bibliotheken aufgrund ihrer Beschaffenheit, kein Mittel um den Aufbau der Web-Seite zu strukturieren. [Javascript]-Bibliotheken werden daher selten im Business-Bereich eingesetzt. [JSF-JQuery] kombiniert nun die Vorteile beider Welten: * Strukturieren durch Komponenten, XHTML und EL-Binding * Leichtgewichtige Kommunikation zwischen Browser und Server !!!Hintergrund [JSF-JQuery] implementiert die [JSF] Ressource-API, um die AJAX- bzw. JSON-Requests von JQuery- und anderen [Javascript]-Komponenten entgegenzunehmen. [JSF-JQuery] stellt den FacesContext und einen Mini-Lifecycle zur Verfügung, sodass mit EL-Expressions weitestgehend wie gewohnt gearbeitet werden kann. !!!Enthaltene Komponenten Einige grundlegende Komponenten sind bereits enthalten. Diese können als Beispiel für das Implementieren weiterer Komponenten dienen. !!JQuery-AJAX Der Tag <j:ajax> stellt das Gegenstück zu <f:ajax> oder <p:ajax> von Primefaces dar. !!!API Die abstrakte Klasse JQueryComponent baut direkt auf die [JSF]-Klasse UIComponentBase auf und stellt die Grundlage zum Implementieren von JQuery- und anderer [Javascript]-Komponenten dar. {{{ <c:forEach begin="1" end="3" var="index"> <p:commandButton id="index-#{index}" value="Index Button #{index}" ajax="false"> <j:ajax listener="#{jqueryController.indexAction(index)}" onsuccess="console.log(response);"/> </p:commandButton> </c:forEach> }}} Das Beispiel erzeugt 3 Knöpfe durch einen For-Each-Loop und ruft die Action-Methode eines Controllers auf. Zusätzlich wird die Index-Variable als Parameter übergeben.