Was Sie sagen, ist wahr, wenn Sie Vintage JSF 1.0/1.1 API mit "reinen" JSF-Komponenten verwenden . Es gab keine eingebaute Komponente, mit der Sie ein HTML <div>
Element darstellen können (damit Sie das allgemeine Seitenlayout auf eine semantische Art und Weise durchführen können). Auch die Einbettung von "normalem" HTML in eine JSF-Seite war ein Problem, da es außerhalb des JSF-Komponentenbaums und vor gerendert wurde. Sie müssen plain HTML in <f:verbatim>
Tags überall platzieren. Die Puristen und die Unwissenheit werden weniger oder mehr dazu gezwungen, <h:panelGrid>
zu verwenden (was einen <table>
rendert), um die Elemente auf der Seite zu positionieren.
Abgesehen davon wurde Netbeans in den frühen JSF-Zeiten mit einem integrierten visuellen JSF-Editor ausgeliefert, mit dem Sie JSF-Komponenten per Drag & Drop ziehen und binden können, ohne eine Codezeile schreiben zu müssen. Dies erzeugt offensichtlich einen auf den ersten Blick unnötigen und nicht mehr wartbaren Code und die pixelgenaue Positionierung der Elemente wurde "hinter den Kulissen" mit einer <h:panelGrid>
erreicht. Diese Art von JSF-Anwendungen sind im Hinblick auf Wartbarkeit und Web-Semantizität ein totales Desaster.
Die meisten der negativen Geschichten, die Sie über JSF in Bezug auf Front-End-Entwicklung hören werden, hängen damit zusammen.Die meisten JSF-Benutzer/Beobachter/Ranters von damals konzentrieren sich derzeit noch blind auf das, weil sie schlechte Erfahrungen gemacht haben und/oder sie denken, dass JSF heutzutage immer noch das Gleiche ist und/oder sie den visuellen Editor als Teil von JSF sehen es ist "nur" ein anderes (schlechtes) Werkzeug. Auch die meisten, die "JSF saugt" sagen, sind normalerweise diejenigen, die es mit einem visuellen/Drag'n'Drop-Editor benutzen, ohne fundiertes Hintergrundwissen darüber zu haben, was unter den Hauben passiert (besonders Servlet API!).
Da JSF 1.2 (die vor Freigabe btw bereits vor mehr als 4 Jahren), die <h:panelGroup>
Komponente ein zusätzliches Attribut bekam: layout="block"
die es ein fullworthy HTML <div>
Element (endlich) machen lassen, so dass Sie eine semantische Layout bringen nur JSF-Komponenten verwenden. Aber es ist nicht nur das, JSF 1.2 kommt auch mit einem verbesserten View-Handler, der das Einbetten von einfachem HTML in andere JSF-Komponenten ermöglicht, ohne sich mit <f:verbatim>
Tags zu beschäftigen. Sie können <div>
Elemente um, wo Sie wollen, ohne mehr Ausführlichkeit hinzufügen.
Obwohl dies eine wesentliche Verbesserung war, gab es immer noch zwei andere große (jedoch nicht direkt UI bezogene) Probleme mit der Standard-JSF-Implementierung: 1) die Zustandsverwaltung unter Anfragen ist schwierig, ohne den Sitzungsumfang zu erfassen gleiche Daten in Tabellen und Dropdown-Listen und die Bedingungen von zB rendered
Attribut); 2) alles geht durch POST und Sie können JSFish-Aktionen nicht über GET aufrufen.
Seit JSF 2.0, das fast schon 1 Jahr alt ist, wurden diese Probleme durch einen neuen Bereich, den Ansichtsbereich und eine neue Gruppe von Komponenten für GET-Aktionen abgedeckt. Außerdem wird JSP durch Facelets als Standardansichtstechnologie ersetzt. Facelets erleichtern die Erstellung von Templates und die Erstellung von Composite-Komponenten, ohne auf Java-Code und/oder benutzerdefinierte Komponenten/Renderer zurückgreifen zu müssen. Obwohl es XHTML-basiert ist, kann es ein HTML5 mit nur <!DOCTYPE html>
einwandfrei wiedergeben. Das XHTML ist nur da, weil Facelets unter den Hauben ist, die ein XML basiertes Werkzeug benutzen, um die (X) HTML Ausgabe zu erzeugen. Das XHTML-basierte Templating impliziert keineswegs, dass es nur XHTML/XML ausgeben kann.
Alles in allem, Ihre Markup Bedenken sind kein Problem, wenn Sie JSF 1.2 oder neuer verwenden und auch XHTML (Facelets) sollte kein Problem sein, da es HTML5 gültige Markup perfekt rendern kann.
JSF bringt nur mehr Ärger als es löst. Durchsuchen Sie diese Website und sehen Sie sich die Probleme der Leute mit JSF an. In jedem Fall sollte die Entscheidung dem Frontend-Team überlassen werden, da Sie die Werkzeuge auswählen, mit denen Sie am besten zurechtkommen. Du solltest JSF so gut wie möglich ablehnen, denn bald werden sie dich bitten, die Seiten so aussehen zu lassen, dass JSF sie nicht so einfach handhaben kann. Wenn du sagst, dass es schwierig ist, werden die Manager dich nur für dumm halten. Wenn Sie gezwungen sind, JSF zu nutzen, dann genießen Sie es, zumindest ist es etwas Neues in Ihrem Lebenslauf. – irreputable
Ja, dass ein weiteres Akronym mit drei Buchstaben auf Lebenslauf das angenehmste Ergebnis von JSF sein kann ... Wenn Sie immer noch die 3LA –
@irreputable, @Miro A sammeln - das ist nicht wahr. JSF, vor allem 2.0 ist eine ziemlich nette Technologie, die ich nicht zögern würde zu wählen. Ich habe oft Leute gesehen, die sich über JSF beschweren, einfach weil sie nicht verstehen, wie es funktioniert und dass Dinge auf andere Weise damit erreicht werden. – Bozho