Thymeleaf
- 解説
- 1. Thymeleafとは
- 2. Thymeleafの準備
- 3. Thymeleafの式
解説
1. Thymeleafとは
『Java WEB中級』コースではHTML文書内にJavaのコードを埋め込むために、テンプレートエンジンとしてJSPを使用していましたが、Spring Bootを使用したプロジェクトではThymeleaf(タイムリーフ)を使用することが推奨されています。そのため、今回のプロジェクトでもThymeleafを使用していきます。
ThymeleafではJSPと違い、拡張子が「.html」の純粋なHTMLファイルを使用し、各タグの属性部分に処理を記述します。JSPと同じように、ファイル内にはJava構文が混在しているのですが、Thymeleafを使用した場合はHTMLファイルなので、プロジェクトを起動していなくても、コーディングの途中結果を確認することができるというメリットがあります。
JSPファイル
※ソースコードが表示されるだけ
htmlファイル
※ブラウザに解釈されて表示される
2. Thymeleafの準備
Spring Bootを使用したプロジェクトでは、buile.gradleに以下の依存関係を追加し、各HTMLファイルの先頭にあるhtmlタグに以下の属性を指定するだけで、Thymeleafを使用することができます。
追加項目
build.gradle | org.springframework.boot:spring-boot-starter-thymeleaf |
htmlタグ | xmlns:th="http://www.thymeleaf.org" |
3. Thymeleafの式
Thymeleafには様々な式がありますが、今回は主に、変数式、選択変数式、リンクURL式の三つの式を使用します。
※Thymeleafの式を使用するには、HTMLの要素の属性名の頭に「th:」をつけるので、注意しましょう。
リンクURL式
リンクURL式はHTMLのhref属性やaction属性のように、URLを設定するときに使用します。大きな特徴として、コンテキストパスを補完してURLを作成することができます。
構文:リンクURL式
構文
th:属性="@{}"
使用例
<a th:href="@{/sample}">サンプルページ</a>
生成されるHTML
<a href="/test_project/sample">サンプルページ</a>
つぶやきアプリではコンテキストパス(「localhost:8080」の後の最初の部分)にプロジェクト名を設定しています。なのでhref属性やaction属性でURLを指定するときに、コンテキストパスを含めたURLを記述しなくてはいけません。しかし、上の例のようにThymeleafのリンクURL式を使用すると、実行時に自動でコンテキストパスを補完してくれます。
なので「login.html」のlinkタグや、formタグに記述しているリンクURL式には、コンテキストパスが記述されていませんが、Thymeleafにより補完され、正しいページ遷移を行うことができます。
実行前
th:href="@{/top}"
th:action="@{/login}"
実行後
href="/tweet_spring/top"
action="/tweet_spring/login"
リンクURL式以外の式については、この後のページで使用する際に適宜解説します。