Thymeleaf Switch Case Example

In Java, you are familiar with switch/case structure. Thymeleaf also has a similar structure that is th:swith/th:case.
Learn Thymeleaf at
If there are more than two possible results of an expression, we can use the th:switch and th:case attributes for the conditional rendering of the HTML elements.

Thymeleaf th:switch, th:case Attributes Example with Spring boot

In this example, we will demonstrate the usage of th:switch and th:case attributes.
Let's add the below dependency to integrate Thymeleaf with Spring boot:
Let's create a User class:
package net.javaguides.springboot;

public class User {
    private String userName;
    private String email;
    private String role;
    public User(String userName, String email, String role) {
        this.userName = userName; = email;
        this.role = role;
    public String getUserName() {
        return userName;
    public void setUserName(String userName) {
        this.userName = userName;
    public String getEmail() {
        return email;
    public void setEmail(String email) { = email;
    public String getRole() {
        return role;
    public void setRole(String role) {
        this.role = role;
Now, let's create a Spring MVC controller with a handler method to return Thymeleaf template like:
package net.javaguides.springboot;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

public class UserController {

    public String switchExample(Model model) {
        User user = new User("Ramesh", "[email protected]", "ADMIN");
        model.addAttribute("user", user);
        return "switch-case";
Here is the Thymeleaf template to demonstrate the use of a switch case statement:
<!DOCTYPE html>
<html xmlns:th="">

    <meta charset="ISO-8859-1">
    <title>Thymeleaf switch case Demo</title>

    <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet" />

    <div class="container">
        <div class="row">
            <h1>Thymeleaf swith case demo</h1>
            <h4 th:utext="${user.userName}"></h4>
            <div th:switch="${user.role}">
                <p th:case="'ADMIN'">User is an administrator</p>
                <p th:case="'MANAGER'">User is a manager</p>
                <p th:case="'GUEST'">User is a guest</p>
                <!-- * for default case -->
                <p th:case="*">User is some other thing</p>


If the User role is "Admin" then "User is an administrator" text prints on the web page.