Thymeleaf

{{Short description|Default templating language for Spring Boot}}

{{Infobox software

| name = Thymeleaf

| logo = Thymeleaf Logo with name small.png

| screenshot =

| caption =

| developer = Daniel Fernández

| latest release version = 3.1.3{{cite web | url=https://www.thymeleaf.org/doc/articles/thymeleaf31whatsnew.html | title=Thymeleaf 3.1: What's new and how to migrate - Thymeleaf }}

| latest release date = {{Start date and age|2024|12|09}}

| operating system = Cross-platform

| programming language = Java

| genre = Template Engine

| standard = XML, XHTML, HTML5

| license = Apache License 2.0

| website = {{url|http://www.thymeleaf.org}}

}}

Thymeleaf is a Java XML/XHTML/HTML5 template engine that can work both in web (servlet-based) and non-web environments. It is better suited for serving XHTML/HTML5 at the view layer of MVC-based web applications, but it can process any XML file even in offline environments. It provides full Spring Framework integration.

In web applications Thymeleaf aims to be a complete substitute for JavaServer Pages (JSP), and implements the concept of Natural Templates: template files that can be directly opened in browsers and that still display correctly as web pages.

Thymeleaf is open-source software, licensed under the Apache License 2.0.

Features

From the project's website:{{cite web |url=http://www.thymeleaf.org/features.html |title=Features - Thymeleaf: Java XML/XHTML/HTML5 template engine |accessdate=2011-10-16 |url-status=dead |archiveurl=https://web.archive.org/web/20111008055319/http://www.thymeleaf.org/features.html |archivedate=2011-10-08 }} Thymeleaf Features

  • Java template engine for XML, XHTML and HTML5.
  • Works both in web and non-web (offline) environments. No hard dependency on the Servlet API.
  • Based on modular feature sets called dialects.
  • Dialect features (e.g.: evaluation, iteration, etc.) are applied by linking them to template's tags and/or attributes.
  • Two dialects available out-of-the-box: Standard and SpringStandard (for Spring MVC apps, same syntax as Standard).
  • Developers can extend and create custom dialects.
  • Several template modes:
  • XML: validating against a DTD or not.
  • XHTML 1.0 and 1.1: validating against standard DTDs or not.
  • HTML5: both XML-formed code and legacy-based HTML5. Legacy non-XML code will be automatically cleaned and converted to XML form.
  • Full (and extensible) internationalization support.
  • Configurable, high performance parsed template cache that reduces input/output to the minimum.
  • Automatic DOCTYPE translations –from template DTD to result DTD– for (optional) validation of both template and result code.
  • Extremely extensible: can be used as a template engine framework if needed.
  • Complete documentation including several example applications.

Thymeleaf example

The following example produces an HTML5 table with rows for each item of a List variable called allProducts.

Name Price
Oranges 0.99

This piece of code includes:

  • Internationalization expressions: #{ ... } rh
  • Variable/model-attribute evaluation expressions: ${ ... }
  • Utility functions: #numbers.formatDecimal( ... )

Also, this fragment of (X)HTML code can be perfectly displayed by a browser as a prototype, without being processed at all: it is a natural template.

See also

References

{{Reflist}}