libro
初心者のためのSpring Bootプログラミング入門

Thymeleafテンプレートエンジンの主な機能 (1/4)

作成:2015-05-02 08:47
更新:2015-05-02 08:47

■選択変数式とリンク式

Thymeleafには、一般的な変数式として${○○}といった形の書き方(変数式)が用意されています。が、この他にもさまざまな書き方が用意されています。以下に簡単にまとめておきましょう。

●選択変数式 *{}
これは、オブジェクトの中にあるプロパティ(フィールド)を取り出すためのものです。あらかじめ「th:object」という属性にオブジェクトを設定しておくと、そのタグ内では、オブジェクト内のプロパティ名を*{○○}という形で指定することで値を取り出せます。

●リンク式 @{}
リンクのURLを生成するためのものです。これは<a>タグなどに、th:hrefという属性を用意して記述するのに使うのが一般的です。


では、これらの簡単な例を上げておきましょう。下にコントローラーのメソッドとテンプレートのタグの例を挙げておきます。ここでは、前回使ったDataクラスを利用しています。name, tel, mailといったフィールドをもったデータ保管用のクラスですね。

ここでは、Dataインスタンスをdataという名前で渡しています。そしてテンプレート側で、<ol>タグにth:object="${data}"としてdataインスタンスをオブジェクトに設定しています。すると、この<ol>タグの内部にある<li>タグでは、th:text="*{name}"というようにして、nameフィールドの値を取り出すことができるようになります。

リンクの方は、<a>タグにth:href="@{http://google.com/}"という形で属性を用意することで、hrefにgoogl.comのURLが設定されます。これだけ見ると「何が便利なんだ?」と思うでしょう。

リンク式が役立つのは、URLにパラメータなどを設定するようになった場合です。@{}内部でも、変数式などを書いて変数を埋め込むことができます。この際、変数で設定される値は、自動的にURLエンコードされてURLとして生成されるのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※コントローラー皮の処理

@RequestMapping("/helo")
public Model helo(Model model) {
    Data data = new Data("Taro","taro@yamada","090-999-999");
    model.addAttribute("data",data);
    
    return model;
}

※テンプレート側の記述

<ol th:object="${data}">
    <li th:text="*{name}" />
    <li th:text="*{mail}" />
    <li th:text="*{tel}" />
</ol>
<p>
<a th:href="@{http://google.com/}">link</a>
</p>

※関連コンテンツ

「初心者のためのSpring Bootプログラミング入門」に戻る