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>

※詳細はこちら
 

他にも多数変更点はありますが、今回はここまで。