Thymeleaf

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.

Thymeleaf
Developer(s)Daniel Fernández
Stable release
3.0.11[1] / October 29, 2018 (2018-10-29)
Written inJava
Operating systemCross-platform
Standard(s)XML, XHTML, HTML5
TypeTemplate Engine
LicenseApache License 2.0
Websitewww.thymeleaf.org

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:[2]

  • 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<Product> variable called all Products.

<table>
  <thead>
    <tr>
      <th th:text="#{msgs.headers.name}">Name</th>
      <th th:text="#{msgs.headers.price}">Price</th>
    </tr>
  </thead>
  <tbody>
    <tr th:each="prod : ${allProducts}">
      <td th:text="${prod.name}">Oranges</td>
      <td th:text="${#numbers.formatDecimal(prod.price,1,2)}">0.99</td>
    </tr>
  </tbody>
</table>

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.

gollark: Weeeird. I suspect it involves some global state somehow, but Cobalt is meant to stop that…
gollark: Looks like I do, yes.
gollark: Do I still have a subdomain CNAMEd to switchcraft.pw?
gollark: I'll ban you from minecraft.osmarks.tk.
gollark: The @Administrakdkqnq should only be pinged for serious issues like missing command computers.

See also

References

  1. http://forum.thymeleaf.org/Thymeleaf-3-0-11-JUST-PUBLISHED-td4031356.html Release announcement
  2. "Archived copy". Archived from the original on 2011-10-08. Retrieved 2011-10-16.CS1 maint: archived copy as title (link) Thymeleaf Features
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.