Их чаще называют шаблонизаторами и предоставляют инструменты для отображения данных, содержащихся в ваших Java объектах, в динамически генерируемые HTML.
Быстрый пример, чтобы вы поняли, что это значит, у вас есть @Controller
с этим отображением:
@GetMapping("/example")
public String getExample(Model model) {
List<ExampleDTO> list = exampleService.findAll();
model.addAttribute("list", list);
return "list-all";
}
ExampleDTO.java
имеет два строковых атрибута: «имя» и «метка». И у вас есть шаблон HTML (list-all.html
), подобный этому:
...
<div th:each="item : ${list}">
Name: <span th:text="${item.name}"></span><br>
Label: <span th:text="${item.label}"></span>
</div>
...
Здесь th:each
и th:text
оба оцениваются Thymeleaf и заменяются на HTML. th:each
будет перебирать коллекцию и генерировать столько элементов, сколько и collection.size()
, тогда как th:text
просто заменяет содержимое тега значением атрибута объекта Java.
В конце концов, браузер получит HTML, как показано ниже (представьте, что список содержит 3 элемента):
...
<div>
Name: <span>Item 1</span><br>
Label: <span>IT1</span>
</div>
<div>
Name: <span>Item 2</span><br>
Label: <span>IT2</span>
</div>
<div>
Name: <span>Item 3</span><br>
Label: <span>IT3</span>
</div>
...
Thymeleaf очень мощный, больше информации здесь .