Thymeleaf is a modern server-side Java template engine for both web and standalone environments.
This post follows this tutorial Serving Web Content with Spring MVC from Spring.
You can download the source code from https://github.com/spring-guides/gs-serving-web-content.git
Dependency
Maven Dependency
1 2 3 4 5 6 7 8
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
|
If you use Gradle
1 2
| implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
Using Thymeleaf
Create a sample Controller that uses Thymeleaf template.
GreetingController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package com.example.demo;
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam;
@Controller public class GreetingController {
@GetMapping("/greeting") public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) { model.addAttribute("name", name); return "greeting"; } }
|
Thymeleaf templates are stored in templates folder in classpath.
classpath:templates/greeting.html
1 2 3 4 5 6 7 8 9 10
| <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Getting Started: Serving Web Content</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <p th:text="'Hello, ' + ${name} + '!'" /> </body> </html>
|
Here is the result
To learn more on Thymeleaf, use Thymeleaf Documentation