Thymeleaf
Thymeleaf is a Java XML/XHTML/HTML5 template engine that can work both in web 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, 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:
- Java template engine for XML, XHTML and HTML5.
- Works both in web and non-web environments. No hard dependency on the Servlet API.
- Based on modular feature sets called dialects.
- * Dialect features are applied by linking them to template's tags and/or attributes.
- * Two dialects available out-of-the-box: Standard and SpringStandard.
- * 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 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 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 all Products.
This piece of code includes:
- Internationalization expressions: # rh
- Variable/model-attribute evaluation expressions: $
- Utility functions: #numbers.formatDecimal
Also, this fragment of HTML code can be perfectly displayed by a browser as a prototype, without being processed at all: it is a natural template.