カテゴリ: Thymeleaf 更新日: 2025/12/31

Thymeleafのth:inlineを完全ガイド!初心者でもわかるインライン式の使い方

Thymeleafのth:inlineの使い方
Thymeleafのth:inlineの使い方

先生と生徒の会話形式で理解しよう

生徒

「ThymeleafでJavaScriptやCSSにサーバーサイドの値を埋め込む方法ってありますか?」

先生

「はい、Thymeleafのth:inline属性を使うと、JavaScriptやCSS内にサーバーサイドの変数を埋め込むことができます。」

生徒

「具体的にはどのように使うんですか?」

先生

「それでは、基本的な使い方を見ていきましょう!」

1. th:inlineとは?

1. th:inlineとは?
1. th:inlineとは?

Thymeleafのth:inline属性は、HTMLテンプレート内でJavaScriptやCSSにサーバーサイドの変数を埋め込むために使用されます。これにより、動的なスクリプトやスタイルを簡単に生成することができます。th:inlineには以下のモードがあります:

  • text:テキストインラインモード。[[...]][(${...})]を使用して、HTML内に変数を埋め込むことができます。
  • javascript:JavaScriptインラインモード。/*[[...]]*//*[(${...})]*/を使用して、JavaScript内に変数を埋め込むことができます。
  • css:CSSインラインモード。/*[[...]]*//*[(${...})]*/を使用して、CSS内に変数を埋め込むことができます。

これらのモードを使用することで、テンプレート内で動的なコンテンツを簡単に生成できます。

2. textモードの使い方

2. textモードの使い方
2. textモードの使い方

textモードでは、HTML内に直接変数を埋め込むことができます。以下はその例です:


<p th:inline="text">こんにちは、[[${user.name}]]さん!</p>

この例では、user.nameの値が「太郎」の場合、以下のように出力されます:


<p>こんにちは、太郎さん!</p>

また、HTMLエスケープを無効にしたい場合は、[(${...})]を使用します:


<p th:inline="text">メッセージ: [(${message})]</p>

これにより、messageの内容がHTMLとして解釈されます。

3. javascriptモードの使い方

3. javascriptモードの使い方
3. javascriptモードの使い方

javascriptモードでは、JavaScript内にサーバーサイドの変数を埋め込むことができます。以下はその例です:


<script th:inline="javascript">
    var username = /*[[${user.name}]]*/ "デフォルトユーザー";
</script>

この例では、user.nameの値が「太郎」の場合、以下のように出力されます:


<script>
    var username = "太郎";
</script>

このように、JavaScript内でサーバーサイドの変数を簡単に使用できます。

4. cssモードの使い方

4. cssモードの使い方
4. cssモードの使い方

cssモードでは、CSS内にサーバーサイドの変数を埋め込むことができます。以下はその例です:


<style th:inline="css">
    .highlight {
        background-color: /*[[${highlightColor}]]*/ yellow;
    }
</style>

この例では、highlightColorの値が「lightblue」の場合、以下のように出力されます:


<style>
    .highlight {
        background-color: lightblue;
    }
</style>

このように、CSS内でサーバーサイドの変数を使用することで、動的なスタイルを実現できます。

5. 注意点とベストプラクティス

5. 注意点とベストプラクティス
5. 注意点とベストプラクティス

th:inlineを使用する際の注意点とベストプラクティスを以下に示します:

  • エスケープの適切な使用:HTMLエスケープが必要な場合は[[...]]、不要な場合は[(${...})]を使用します。
  • デフォルト値の設定:インライン式にはデフォルト値を設定することで、テンプレートの静的表示時にも意味のある内容を表示できます。
  • テンプレートの可読性:複雑なロジックはテンプレート内に書かず、コントローラーで処理してからテンプレートに渡すようにしましょう。

これらのポイントを押さえることで、th:inlineを効果的に活用できます。

6. 実践例:ユーザー情報の表示

6. 実践例:ユーザー情報の表示
6. 実践例:ユーザー情報の表示

以下は、ユーザー情報を表示する実践的な例です:


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>ユーザー情報</title>
    <script th:inline="javascript">
        var user = /*[[${user}]]*/ {};
    </script>
    <style th:inline="css">
        .username {
            color: /*[[${usernameColor}]]*/ black;
        }
    </style>
</head>
<body>
    <p class="username" th:inline="text">こんにちは、[[${user.name}]]さん!</p>
</body>
</html>

この例では、JavaScriptとCSSの両方でth:inlineを使用し、ユーザー情報を動的に表示しています。

まとめ

まとめ
まとめ

この記事では、Thymeleafのth:inline属性を中心に、textモード・javascriptモード・cssモードを使って、 サーバーサイドの値をテンプレート内へ動的に埋め込む方法を詳しく学びました。とくに、Thymeleaf特有の [[${...}]][(${...})] の構文が、HTML・JavaScript・CSS それぞれの文脈でどのように動くのかを理解することが、 実際の開発において非常に重要になります。また、テンプレートの可読性を保つためにロジックをコントローラー側で整理することや、 インライン式にデフォルト値を設定する工夫など、実務でも役立つポイントが数多くありました。 さらに、JavaScript内へオブジェクトをそのまま埋め込んだり、CSSの色指定を動的に変更したりする具体例を見ることで、 Webアプリケーションの表現力を大きく広げられることが分かりました。特に、ユーザーごとの設定値や画面カスタマイズを サーバーサイドと連携させながら反映させたい場面では、th:inlineの柔軟さが大きな力を発揮します。 ここでは、もう一度振り返りとして、Thymeleafのテンプレート内でよく使われる class やタグを使ったサンプルをまとめます。 実際の開発でも参考にしやすいように、JavaScript・CSS・textの三つのインライン活用をひとつのセクションで シンプルに示しています。

動作イメージを深めるサンプルコード


<div class="card p-3" th:inline="text">
    <p class="username">ようこそ、[[${user.name}]]さん。</p>
</div>

<script th:inline="javascript">
    var userAge = /*[[${user.age}]]*/ 0;
    var themeColor = /*[[${themeColor}]]*/ "lightgray";
</script>

<style th:inline="css">
    .username {
        color: /*[[${usernameColor}]]*/ black;
    }
    .theme-bg {
        background-color: /*[[${themeColor}]]*/ lightgray;
    }
</style>

このサンプルのように、ThymeleafではひとつのHTMLテンプレートの中で、表示テキスト・スクリプト・スタイルをすべて サーバーサイドと連動させることが可能です。例えばユーザー名だけでなく、年齢やテーマカラーなどユーザー固有の情報を 表示やデザインに組み込むことで、より親しみのある画面を構築できます。 また、アプリケーションの規模が大きくなるほど、テンプレートの管理・変数の受け渡し・モードごとのエスケープ方法などを 正しく扱うことが重要です。[[...]][(${...})] の挙動の違いを理解しておくことで、 セキュリティ面でも安全なテンプレート構築ができるようになります。

先生と生徒の振り返り会話

生徒
「今日の内容で、JavaScriptやCSSの中にサーバーサイドの値を埋め込む仕組みがよく分かりました。 th:inlineって、こんなに便利なんですね。」

先生
「そうですね。特に、値を動的に変えたいときや、ユーザーごとに違う画面を作りたい場合には非常に役立ちます。 text・javascript・css の三つのモードをしっかり使い分けることが大切ですよ。」

生徒
「たしかに、JavaScriptの中で /*[[…]]*/ を使うところなどは最初は不思議でしたが、 実際にどう展開されるのかを見ると理解が深まりました。CSSの色変更も簡単にできるのは便利です。」

先生
「テンプレートは見た目だけでなく、サーバーの値を使いながら柔軟に構成できるところが魅力です。 今回の内容が理解できていれば、実務でも十分活かせますよ。自分の作るアプリにどう取り入れられるか考えてみてください。」

生徒
「はい!実際の画面でも使ってみます。ありがとうございました!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Thymeleafのth:inlineとは何ですか?どんな場面で使うのでしょうか?

Thymeleafのth:inlineとは、HTMLテンプレート内でサーバーサイドの変数をJavaScriptやCSS、テキスト内に埋め込むための属性です。動的にスタイルやスクリプトを生成したいときに使います。
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.8
Java&Spring記事人気No8
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本