WebアプリケーションにおけるHTMLビューの技術といえば、JSPやTilesなどが有名ですが、
Spring Bootでは大体の方がThymeleaf を使っているのではないでしょうか。
Spring Boot 2.0リリースに伴い、サードパーティライブラリ群もアップグレードが行われましたが
今回はThymeleaf 3を紹介いたします。
知らない方のために、Thymeleaf の特徴を簡潔に説明しますと、
・HTMLなどのテンプレートエンジンでSprint BootではJSPの代わりに標準的に使われている
・Thymeleafは変数部分を属性値として記述するため、ブラウザで表示してもコード的な表示が行われない(ナチュラルテンプレーティング)
※詳細はこちらへ
HTML(テンプレート)の例(変数nameには、"フォアフロンティア 太郎"が設定)
<span th:text="${name}">サンプル</span>です。
HTMLファイルをダブルクリックしてそのまま表示(thはHTMLの属性として解釈されずにそのまま記述内容が表示される)
<span>サンプル</span>です。
Webアプリケーション経由でページ表示(Thymeleafが変数値の内容でタグBody部を書き換えて表示している)
<span>フォアフロンティア 太郎</span>です。
このようにナチュラルテンプレーティングができることが他のテンプレートにはない最大の利点だと思っています。
◆Thymeleaf 3の特徴(Thymeleaf 2からの変更点で主に使われるものを抜粋)
・Template modes
次のテンプレートのモードが選択可能となり、HTMLやXMLじゃなくても使用できるようになりました。
HTML
XML
TEXT
JAVASCRIPT
CSS
RAW
CSS、JAVASCRIPTなどでは以下のようなプレーンテキストを生成するため、以下のような構文が追加されたようです。
以下は変数itemsを繰り返し、箇条書きでitemを表示( < >ではなく、[ ]を使用する)
[# th:each="item : ${items}"]
- [# th:utext="${item}" /]
[/]
・インライン化メカニズムの改良
Thymeleaf 2:<p>本日は、<th:block th:utext="${weather}"></th:block>なり</p>
↓
Thymeleaf 3:<p>本日は、[[${weather}]]なり</p>
・The No-Operation token
何もしないオぺーションの導入
何それと思うかもしれませんが、以下のuser.nameが何も設定されていない場合、何も処理がおこなわず"ユーザ名は未入力"が表示されます
<span th:text="${user.name} ?: _">ユーザ名は未入力</span>
※詳細はこちらへ
他にも多数変更点はありますが、今回はここまで。


