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.