Thymeleaf Link Expression

In this tutorial, we will learn how to use Thymeleaf Link Expression in a Thymeleaf HTML template with an example. 

Check out the complete Thymeleaf tutorials and examples at Thymeleaf Tutorial

Link expressions are meant to build URLs in Thymeleaf templates. 



Link Expressions Example

Let's understand Link expressions with an example.

Let's create a Spring boot project using the spring initializr and add Spring Web and Thymeleaf dependencies:

User Model Class

Next, let's create a User model class with the following content into it:
package net.javaguides.thymeleaf.model;

public class User {
    private String name;
    private String email;
    private String role;
    private String gender;

    public User(String name, String email, String role, String gender) { = name; = email;
        this.role = role;
        this.gender = gender;

    public String getName() {
        return name;

    public void setName(String name) { = name;

    public String getEmail() {
        return email;

    public void setEmail(String email) { = email;

    public String getRole() {
        return role;

    public void setRole(String role) {
        this.role = role;

    public String getGender() {
        return gender;

    public void setGender(String gender) {
        this.gender = gender;

Spring MVC Controller - UserController

Let's create a UserController and add the handler method to return the Thymeleaf template like:
package net.javaguides.thymeleaf.controller;

import net.javaguides.thymeleaf.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

public class UserController {

    // handler method to handle link expressions
    // http://localhost:8080/link-expression
    public String linkExpression(Model model){
        model.addAttribute("id", 1);
        return "link-expression";

Thymeleaf Template: link-expression.html

Here is the Thymeleaf template that demonstrates the usage of Link expressions:
<!DOCTYPE html>
<html lang="en"
    <meta charset="UTF-8">
    <title>Link Expressions</title>
    <link th:href="@{/css/demo.css}" rel="stylesheet" />
<h1>Link Expressions Demo:</h1>
<a th:href="@{/variable-expression}"> variable-expression </a>
<a th:href="@{/selection-expression}"> selection-expression </a>
<p> <a th:href="@{link-expression/{id}(id=${id})}">link with parameter</a></p>


Run the Spring boot application and hit the below link in the browser:

Here is the output: