www.wikidata.de-de.nina.az
Jakarta Faces JSF fruher Jakarta Server Faces davor JavaServer Faces ist ein Framework Standard zur Entwicklung von grafischen Benutzeroberflachen fur Webanwendungen Basierend auf Servlets und JSP Technik gehort JSF zu den Webtechnologien der Jakarta EE Mit Hilfe von JSF kann der Entwickler auf einfache Art und Weise Komponenten fur Benutzerschnittstellen in Webseiten einbinden und die Navigation definieren Voraussetzungen fur die Entwicklung von JSF Content sind das JDK ein Servlet Container z B Apache Tomcat und Grundlagenverstandnis von HTTP und der Programmiersprache Java Zur Vereinfachung der Entwicklung kann eine Integrierte Entwicklungsumgebung verwendet werden Jakarta FacesBasisdatenEntwickler Eclipse Foundation 1 Aktuelle Version 4 0Betriebssystem plattformunabhangigProgrammiersprache JavaKategorie FrameworkLizenz Eclipse Public License 2 0 GPL linking exceptionjakarta ee specifications faces Inhaltsverzeichnis 1 Komponenten 2 Lebenszyklus 3 Implementierungen 3 1 Komponentenframeworks 4 Standardisierung 5 Managed Bean Mechanismus 5 1 Gultigkeitsbereiche von Managed Beans engl scope 6 JSF Standard Tags nicht vollstandig 7 Literatur 8 Weblinks 9 EinzelnachweiseKomponenten BearbeitenUm Redundanzen im Code zu vermindern und die Wiederverwendbarkeit des UI Codes uber mehrere Projekte zu verbessern konnen Komponenten erstellt und verwendet werden JSF Komponenten unterliegen einer hierarchischen Struktur Ahnlich der Java Swing API gibt es in JSF Container Komponenten die Komponenten enthalten konnen Um die Anwendung besser zu strukturieren wird strikt zwischen Modell Prasentation und Steuerung getrennt wie es das Model View Controller Konzept vorsieht Ein zentrales Konzept von Jakarta Server Faces ist die View Dabei handelt es sich um eine Baumstruktur aus JSF Komponenten Eine solche Struktur kommt genau einmal pro Aufruf vor bei Verwendung von JavaServer Pages JSP also einmal pro Seite Die View wird am Anfang des JSF Lebenszyklus aufgebaut direkt nach Eintreffen der Anforderung vom Client In der letzten Phase des Lebenszyklus werden die Komponenten der Views mit der Wurzel beginnend rekursiv aufgerufen um die Antwort beispielsweise eine HTML Seite zu erzeugen Die Controller Komponente welche Benutzereingaben steuert kann in JSF uber eigene Komponenten oder mit einem sogenannten Handler implementiert werden Diese sind meist mit Java geschrieben Die eigentliche Logik der Applikation findet im Model statt Bei JSF sind die Model Komponenten sogenannte JavaBeans Java Klassen die vom Container verwaltet werden JSF Web Anwendungen besitzen in der Regel keinen nennenswerten HTML Code Der HTML Code wird erst im Quellcode der generierten Seite sichtbar JSF Komponenten besitzen eigene Renderer Diese Renderer wandeln die mit JSF geschriebenen Seiten in HTML Code um so dass jeder HTML Web Browser die Seite darstellen kann Eigene Renderer konnen fur andere Ausgabeformate geschrieben werden Lebenszyklus Bearbeiten nbsp Diagramm des Lebenszyklus von Jakarta Server FacesDie Spezifikation der Jakarta Server Faces definiert einen sogenannten Lebenszyklus den eine JSF Anwendung mit jedem Aufruf erneut durchlauft Dieser Lebenszyklus ist in sechs Phasen aufgeteilt Restore View Sicht wiederherstellen wahlt anhand der eingehenden Anforderung eine Sicht View aus und baut den dazu passenden Komponentenbaum auf Apply Request Values Anforderungsparameter anwenden extrahiert Parameter aus der Anforderung ublicherweise ein HTTP Post Request und weist sie den passenden JSF Komponenten zu beispielsweise Eingabefeldern Process Validations Validierung ausfuhren uberpruft die Gultigkeit der zuvor ermittelten Eingaben Dazu werden eigene Konverter und Validator Objekte verwendet die den Komponenten in der View Definition zugewiesen wurden Update Model Values Modell aktualisieren weist den Modellobjekten die zuvor ermittelten Werte zu Invoke Application Anwendung aufrufen ruft durch die Anwendung definierte Methoden auf beispielsweise wenn ein Button betatigt wurde Render Response Antwort wiedergeben erzeugt schliesslich die Antwort auf die ursprungliche Anfrage beispielsweise eine HTML Seite Hierzu werden sogenannte Renderer aufgerufen die den View Komponenten zugeordnet sind Treten Fehler auf oder soll als Antwort beispielsweise eine HTML Seite aufgerufen werden die keine JSF Komponenten enthalt so konnen einzelne Phasen ubersprungen werden Implementierungen BearbeitenDie JSF Spezifikation wird von einer Reihe Frameworks implementiert Diese werden meist in JEE Containern mitgeliefert und lassen sich oft nur unter Schwierigkeiten austauschen Dazu gehoren beispielsweise Mojarra die Referenzimplementierung von Jakarta Server Faces im Rahmen des GlassFish Java Anwendungsservers Apache MyFaces die Implementierung von der Apache Software FoundationKomponentenframeworks Bearbeiten Komponentenframeworks erweitern JSF Implementierungen Mit ihnen konnen beispielsweise JavaScript und Ajax einfacher generiert werden ICEfaces Opensource Framework von ICEsoft basierend auf dem Woodstock GUI Komponentenframework PrimeFaces 2 BootsFaces 3 Mojarra Scales J4Fry xulfaces jQuery4jsf MyFaces Trinidad von der Apache Software Foundation MyFaces Tobago von der Apache Software Foundation MyFaces Tomahawk von der Apache Software Foundation Oracle ADFs Komponentenbibliothek ein kommerzielles Java Framework fur Java Enterprise Applikationen hat einige Kernfunktionalitaten mit Apache MyFaces Trinidad gemeinsam RichFaces inkl Ajax4jsf von Red Hat ehemals Exadel Entwicklung im Juni 2016 eingestellt 4 Verschiedene Unternehmen bieten auch grafische Entwicklungswerkzeuge fur JSF an Standardisierung BearbeitenDie JSF Spezifikation wurde im Rahmen des Java Community Process JSR 127 von einer Reihe bekannter Unternehmen entwickelt und am 27 Mai 2004 in der Version 1 1 verabschiedet Am 11 Mai 2006 wurde die Version 1 2 JSR 252 veroffentlicht Die aktuelle Version der Referenzimplementierung Mojarra 1 2 15 erschien am 24 September 2010 5 Die Version 2 0 JSR 314 brachte insbesondere Ajax Unterstutzung mit sich Sie ist seit Dezember 2009 erhaltlich und kann auf der Oracle Homepage heruntergeladen werden Eine Implementierung sowie ein Tutorial und weitere Dokumentation stehen im Mojarra Project zur Ansicht und zum Download bereit die derzeitige Version der Mojarra Referenzimplementierung lautet 2 0 8 6 Bei JSF 2 1 handelt es sich um einen Wartungsrelease von Version 2 0 freigegeben wurde die Spezifikation am 21 November 2010 7 die aktuelle Version der Mojarra Referenzimplementierung lautet 2 1 6 6 Die Version JSF 2 2 wurde am 15 April 2013 freigegeben 8 Sie enthalt insbesondere folgende Neuerungen Unterstutzungen fur HTML5 wie beispielsweise das Durchreichen von neuen HTML5 Attributen beziehungsweise Custom Data Attributen Erweiterte Flow Unterstutzung durch einen eigenen Contexts and Dependency Injection Scope FlowScoped erganzend zum bereits existierenden ConversationScope ConversationScoped Zustandslose Views durch Setzen des Attributes transient true sowie Resource Library Contracts ein erster Ansatz um Ressourcen fur wahlbares Aussehen zur Verfugung zu stellen 9 Jakarta Server Faces umfasst Eine Tag Bibliothek zur Einbindung der JSF Oberflachenkomponenten in JavaServer Pages oder in einem Facelet eine Java API zur Kontrolle von Bedienelementen der Benutzerschnittstelle Dies schliesst auch die Behandlung von Ereignissen die Validierung der Eingabe Navigation und Unterstutzung fur Internationalisierung mit ein Eine eigene Expression Language EL welche als Grundlage die JSP Technik hat In JSF werden EL Ausdrucke in folgender Schreibweise geschrieben 1 2 PI 2 handler attribut Der Hauptunterschied zur JSP EL liegt nicht nur an dem vorangestellten sondern auch in der Sprache selbst Die JavaServer Pages Expression Language ist dynamischer als die JSF Expression Language JSF EL Die JSF EL ist zustandsbehafteter statischer vergleichbar mit den Java Swing Komponenten Die Expression Language von JSF hat eine bidirektionale Wertebindung d h sie kann Properties Eigenschaften einer Bean lesen z B Initialisierung und schreiben z B Werte an Property binden Folgende Tabelle zeigt Ausdrucksarten der Expression Language von JSF Expression Language Ausdruck BeispielWertebindung handler name name ist eine Eigenschaft der handler BeanMethodenbindung handler actionMethode actionMethode ist eine Methode der handler BeanArithmetisch Logisch 5 8 65 5 99 gt 90 5 gt 6 8 lt 4 Bei der Entwicklung von JSF Seiten sollte auf die Kombination von JSP und JSF Ausdrucken verzichtet werden da das zu Problemen fuhren kann Managed Bean Mechanismus BearbeitenDer Managed Bean Mechanismus erlaubt es POJOs mit einem bestimmten Gultigkeitsbereich englisch scope und Initialwerten fur sogenannte Managed Properties auch im Spezialfall dass das Bean vom Typ java util List oder java util Map ist zu versehen Dies kann entweder in der XML Konfiguration der JSF Applikation oder ab JSF 2 0 min Java Version 1 5 als zusatzliche Option mit Annotations direkt im Bean konfiguriert werden Managed Beans konnen mit der Hilfe von EL Ausdrucken direkt z B in Facelets verwendet werden Gultigkeitsbereiche von Managed Beans engl scope Bearbeiten Der Gultigkeitsbereich einer Bean legt fest wie lange eine Bean existiert und unter welchen Umstanden sie als existent angesehen wird Wie bereits erwahnt konnen Managed Beans mit Managed Properties in andere Managed Beans injiziert werden Dabei ist zu beachten dass die injizierte Bean einen grosseren Gultigkeitsbereich hat als die Bean in die sie injiziert wird Der Grund dafur ist dass die injizierte Bean andernfalls potenziell kurzlebiger ist als die Bean in welche sie injiziert wird Folgende Tabelle zeigt alle Gultigkeitsbereiche in der aktuellen JSF Version 2 1 sortiert nach der Grosse des Gultigkeitsbereichs mit dem kurzlebigsten Scope zu oberst Wert XML lt managed bean scope gt Annotation Gultigkeitsbereichrequest RequestScoped gultig solange der aktuelle Request behandelt wirdview ViewScoped gultig solange die aktuelle View gultig istsession SessionScoped gultig fur eine Sessionapplication ApplicationScoped gultig fur die Applikationnone NoneScoped gultig wie die Bean in welche sie injiziert wurdeJSF Standard Tags nicht vollstandig BearbeitenTag Name Beschreibung lt f view gt Erzeugt Instanz der Klasse javax faces component UIViewRoot Alle enthaltenen Komponenten werden Child Komponenten der View lt h form gt Bindet Eingabekomponenten in ein Formular Sendet POST Request per HTTP lt h panelGrid gt In HTML lt table gt Tag Anzahl der Spalten bestimmt das columns Attribut lt f facet gt Definiert eine Facette als Kindelement eines Containers z B Uberschrift fur eine Tabelle lt h outputText gt Normaler HTML Text lt h outputLabel gt In HTML lt label gt Tag Kennzeichnung eines Eingabefeldes lt h panelGroup gt Container der mehrere JSF Tags zu einem Tag zusammenfugt lt h inputText gt In HTML lt input gt Tag mit type text value Attribut bezieht sich auf die Komponenten z B EL Ausdruck lt h inputSecret gt In HTML lt input gt Tag mit type password lt h commandButton gt Button in HTML lt input gt Tag mit type Attribut submit reset image Standardmassig submit Sendet Formular ab und lost ActionEvent aus uber Bean Methode lt h message gt Gibt die erste Fehlermeldung fur die im for Attribut angegebenen Komponenten aus ErrorStyle Attribut kann als CSS Fehler Darstellung genutzt werden Literatur BearbeitenMichael Goll JavaServer Faces JSF verstehen und praktisch einsetzen 3 uberarbeitete Auflage Springer Vieweg 2020 ISBN 978 3 65831 802 4 Martin Marinschek u a JavaServer Faces 2 0 Grundlagen und erweiterte Konzepte dpunkt verlag 2009 ISBN 978 3 89864 606 2 Bernd Muller JavaServer Faces 2 0 Ein Arbeitsbuch fur die Praxis Hanser 2010 ISBN 978 3 446 41992 6 Bernd Muller JavaServer Faces und Jakarta Server Faces 2 3 Ein Arbeitsbuch fur die Praxis Hanser 2021 ISBN 978 3 446 45670 9 Marcel Urbanek JavaServer Faces JSF verstehen und praktisch einsetzen w3l 2010 ISBN 978 3 86834 003 7Weblinks Bearbeiten nbsp Commons Jakarta Server Faces Sammlung von Bildern Videos und Audiodateien JavaServer Faces Technology bei Oracle OpenSource Implementierung Apache MyFaces JSF Implementierungs Pattern PDF 618 kB Demonstration von Standard und Erweiterungskomponenten JSF Tutorials Memorynotfound JSF tutorials Code Examples Best PracticesEinzelnachweise Bearbeiten projects eclipse org primefaces org bootsfaces net jboss org RichFaces abgerufen 18 Januar 2011 javaserverfaces java net Oracle Mojarra JSF Download abgerufen 18 Januar 2011 a b Oracle Mojarra JavaServer Faces Abgerufen am 19 Januar 2012 Andy Bosch Was ist neu in JSF 2 1 Abgerufen am 9 Oktober 2011 JSR 344 JavaServerTM Faces 2 2 Final Approval Ballot What s new in JSF 2 2 Abgerufen von https de wikipedia org w index php title Jakarta Faces amp oldid 224264516