13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

アイエンター大阪支店Advent Calendar 2017

Day 16

Thymeleafを使って簡単な表示をさせてみる

Last updated at Posted at 2017-12-15

Thymeleaf(タイムリーフ)って?

・Springと仲良しです(Javaのフレームワーク)
・テンプレートエンジンです。

テンプレートエンジンって?

テンプレートと呼ばれる雛形と、データを組み合わせてドキュメントを作成することです。

見たほうが早い

こんな感じ

Java
sample.java
@GetMapping("/sample")
public String sample(Model model) {
    model.addAttribute("title", "Hello world");
    return "sample";
}
HTML
samle.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
</head>
<body>
    <h1 th:text="${title}"></h1>
</body>
</html>

Javaの"title"とHtmlの"${title}"が紐付かれて値が渡されています。

実行結果

スクリーンショット 2017-12-10 13.54.32.png

リストだってサクサク

こんな感じ

Java
sample.java
@GetMapping("/sample")
public String sample(Model model) {
    List<Word> list = new ArrayList<Word>();
    for(int i = 0; i < 3; i++) {
        Word w = new Word();
        w.id = i;
        list.add(w);
    }
    model.addAttribute("list", list);
    return "sample";
}
HTML
samle.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
</head>
<body>
    <table border="1">
        <tr><th>ID</th></tr>
        <tr th:each="word : ${list}">
            <td th:text="${word.id}"></td>
        </tr>
    </table>
</body>
</html>

JavaのWordモデルを使用して(中はidフィールドのみ)Word型のリストを渡しています。

th:objectを使用すると、${word.id}*{id}と省略できます。

HTML
samle.html
<tr th:each="word : ${list}" th:object="${word}">
    <td th:text="*{id}"></td>
</tr>
実行結果

スクリーンショット 2017-12-10 22.10.38.png

入力タイプの場合

さっきのリストを入力フィールドにするとこんな感じ

HTML
samle.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
</head>
<body>
    <table border="1">
        <tr><th>ID</th></tr>
        <tr th:each="word : ${list}" th:object="${word}">
            <td>
                <input type="text" id="id" name="id" th:value="*{id}">
            </td>
        </tr>
    </table>
</form>
</body>
</html>
実行結果

スクリーンショット 2017-12-10 22.16.54.png

Spring Bootの導入は省略してますが、
こんな感じでシンプルに記載することができます。便利!

:smile:では〜

参考

テンプレートエンジン:Wikipedia
Thymeleaf:公式

13
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?