Thymeleafでオブジェクト型の変数を扱う方法

Thymeleafでオブジェクト型の変数を扱う方法

Thymeleafでオブジェクト型の変数を扱う方法を説明します。
以下は、オブジェクト型の変数をThymeleafテンプレートで使用するための基本的なサンプルです。

サンプルシナリオ

Person というクラスを持っていて、そのインスタンスをThymeleafで表示するケースを考えます。
Person クラスは次のような構造です。

public class Person {
  private String name;
  private int age;

  // コンストラクタ
  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  // ゲッターとセッター
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }
}

コントローラ

SpringBootのコントローラで、Person オブジェクトをモデルに追加します。

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

@Controller
public class PersonController {

  @GetMapping("/person")
  public String getPerson(Model model) {
    Person person = new Person("John Doe", 30);
    model.addAttribute("person", person);
    return "person";
  }
}

Thymeleafテンプレート

person.html というテンプレートで、Person オブジェクトのプロパティを表示します。
Thymeleafのテンプレートでは、${} 記法を使ってオブジェクトのプロパティにアクセスできます。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>Person Details</title>
</head>
<body>
  <h1>Person Details</h1>
  <p>Name: <span th:text="${person.name}">Name</span></p>
  <p>Age: <span th:text="${person.age}">Age</span></p>
</body>
</html>

ポイント

オブジェクトのプロパティアクセス
${person.name} や ${person.age} で、person オブジェクトのプロパティにアクセスします。
モデルの属性
Model に追加された person 属性が、Thymeleafテンプレートで使用可能になります。

この方法で、Thymeleafテンプレートでオブジェクト型の変数を扱うことができます。