Templatesprache für Webfrontend in Kombination mit Spring MVC

Hallo zusammen,

ich bin auf der Suche nach einer etablierten Lösung zur Erstellung einer Weboberfläche in Verbindung mit Spring MVC.
Eine Zeit lang habe ich mit Thymeleaf gearbeitet, habe aber den Eindruck, dass die Community dahinter nicht sonderlich groß ist und die Weiterentwicklung etwas schläft. Die Wiederverwendung von Templatefragmenten hat mir auch nicht sonderlich gut gefallen. Mit einem Addon konnte man das verbessern, dabei ist man aber immer darauf angewiesen, dass sowohl Thymeleaf als auch die benötigten Addons zeitnah an die verwendete Spring-Version angepasst werden.

FreeMarker scheint eine weitere Alternative zu sein, die auch aktiv weiterentwickelt wird.

Darüber hinaus gibt es auch noch weitere Lösungen, alle mehr oder weniger etabliert.
Oder sollte man nach wie vor auf JSP setzen?

Also JSF läuft zumindest mit Spring bzw. Spring Boot. Aber ich kenne eigentlich nur Thymeleaf, welches immer mit Spring in Verbindung gebracht wird.

Also ich habe sehr gute Erfahrungen mit Themeleaf gemacht.

Würde nicht auf etwas anderes setzen.

Soweit ich as bisher mitbekommen habe, ist Thymeleaf das verbreitetste, wenn man auf Server-Seitiges Rendering setzt. Hat gegenüber den meisten anderen auch den Vorteil, dass es völlig valides HTML ist.

Naja, vor knapp nem halben Jahr wurde Version 3 veröffentlicht, würde ich jetzt nicht als schlafende Weiterentwicklung bezeichnen :wink:

Welche Probleme hattest du denn da?
Und welches Addon nutzt du? Bisher habe ich keins gebraucht, aber könnte vielleicht ganz interessant sein…

Das allerdings hat man bei jeder Lib :wink:
Gabs da denn überhaupt irgendwann mal Probleme mit? Ich hab in den letzten 5 Jahren nur einen Spring-Versionssprung mitbekommen, und zumindest da lief Thymeleaf schon in den ersten Builds problemlos…

Thymeleaf wurde auch primär zur Nutzung mit Spring entwickelt.

Das letzte Release ist in der Tat nicht lange her. Und die Version 3 bringt schon einige Verbesserungen (insbesondere in Bezug auf die Performance) mit. Aber das letzte Release ist nur ein Aspekt. Der letzte Commit auf 3.0-master und auch 3.0-dev war vor 3 Monaten, was ich für ein Projekt mit der Aufmerksamkeit und der Anzahl an noch offenen Baustellen recht lang finde.
Die Integration von Springsecurity 5 hat augenscheinlich noch nicht einmal begonnen, obwohl es bereits im November letzten Jahres stabil war.
Das ist nicht als negative Kritik gemeint - das Team ist klein und Zeit ist begrenzt, das kenne ich persönlich sehr gut. Das bewegt mich aber zu der Aussage, dass die Entwicklung etwas eingeschlafen sei :wink:

„Problem“ ist vielleicht zuviel gesagt. Es ist aber mit nativem Thymeleaf nicht möglich, eingebundenen Fragmenten „Parameter“ mitzugeben. Das verwende ich teilweise für vordefinierte Dialoge etc., denen dann als Parameter die anzuzeigende Nachricht übergeben wird.
Dieses Problem löst der Layoutdialekt.

Klar, das ist bei jeder Bibliothek so. Thymeleaf integriert sich allerdings in Spring, bei bspw. FreeMarker ist es umgekehrt. Die Integration von FreeMarker wird durch das Spring-Team gemacht, sodass mit jedem Release sichergestellt ist, dass man FreeMarker weiter nutzen kann. Ob das dann auch gilt, wenn FreeMarker 3 released wird, wird sich zeigen. Die Wahrscheinlichkeit ist aber relativ groß, weil die Community hinter Spring enorm ist.

Die Integration in Spring 5 funktionierte meiner Erinnerung nach bereits bei den Alphaversionen. Die Springsecurity-Erweiterung genießt, obwohl durch das Projekt angepriesen, nicht dieselbe Aufmerksamkeit.

Irgendwo gibts da n Ticket zu, soll „fast fertig“ sein. Der Teil scheint nicht wirklich Priorität zu haben, wohl weil das meiste noch mit version 4 klaut :confused:

Fragments mit Parametern sind eigentlich schon möglich: Tutorial: Using Thymeleaf

Dafür ist afaik der Spring-/Html-spzifische Teil von Freemarker (und vermutlich auch der anderen) wesentlich kleiner?
Thymeleaf geht da schon über „reine“ Template-Engines hinaus, z.B. auch bei Behandlung von Forms mit csrf-Token, passender Methoden, etc - wobei meine Erfahrungen mit anderen Template-Engines da recht alt und beschränkt sind, liegt also möglicherweise nur daran.

Zu Spring Security 5 habe ich mit deinen Informationen dieses Ticket gefunden:

Dann ist mein Sachstand diesbezüglich offenbar veraltet. Ob dies allerdings bereits ein vollwertiger Ersatz für den Layoutdialekt ist, kann ich auf die Schnelle nicht bewerten. Zumindest wurde der Layoutdialekt für Thymeleaf 3 komplett neu geschrieben.

Das sind Erfahrungen, auf die ich mit diesem Thread gehofft hatte. Features wie formbinding samt transparentem Einbinden von CSRF-Tokens etc. sind natürlich ein must have. Diesbezüglich scheint das Spring Project FreeMarker aufzubohren:
https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference/web.html#mvc-view-freemarker-forms

FreeMarker ist aber, wie im Ausgangsposting schon geschildert, nur das Ergebnis einer noch nicht ganz so ausführlichen Webrecherche. Vielleicht gibt es ja sinnigere Alternativen. Und vielleicht ist Thymeleaf ja doch mittlerweile weiter, als ich dachte.

Der Layoutdialekt scheint hauptsächlich auf das Mergen von Layout und Content abzuzielen, wenn ich’s richtig sehe, das unterstützt Thymeleaf von Haus aus afaik nicht. Sieht aber ganz praktisch aus…

Wobei das afaik nur einen Teil der Funktionalität abbildet, und man dann kein valides HTML mehr schreibt. Thymeleaf ist halt direkt für HTML, den Kontext hat z.B. Freemarker nicht.

Die meisten Alternativen stehen auf der von dir genannten Seite: https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference/web.html#mvc-view
Die meisten dürften da Thymeleaf bevorzugen, eben weil es direkt dafür gemacht ist

Das wäre für mich kein Kriterium, solange IntelliJ IDEA eine vernünftige Unterstützung für die Templatesprache hat :wink:

An und für sich finde ich auch Ansätze mit XLST spannend - aber ob das so praxistauglich ist, wage ich zu bezweifeln.

Die habe ich mir natürlich auch angesehen. Aber nicht so in der Tiefe, dass ich daraus eine fundierte Entscheidung treffen könnte. Daher hatte ich gehofft, hier Erwartungswerte zu finden.

Derzeit tendiere ich wieder in Richtung Thymeleaf. In der Hoffnung, dass das mit Spring Security 5 bald unterstützt wird und sich die anderen „Unzulänglichkeiten“ auch mit der Weiterentwicklung legen, scheine ich damit auf das richtige Pferd zu setzen.
Eine umfangreiche Einarbeitung in eine neue Sprache entfällt dann auch.

Das soll jetzt kein Stopper für weitere Diskussionen sein, also frei heraus mit weiteren Gedanken :wink: