LoginSignup
2

More than 5 years have passed since last update.

Thymeleaf × SpEL でテンプレート上で List を定義する方法

Last updated at Posted at 2016-12-15

SpringBoot × Thymeleaf のWeb開発で、テンプレート上で List の要素に値が含まれるかなどのチェックをしたいケースがある。

<div th:if="${#lists.contains(lists, element)}"> ...

的なやつ。

上の例の "lists" をテンプレート内で定義したかったけど、意外とうまく行かなかったのでメモしておく。

前提

まず、Thymeleaf にはリテラルが次の種類しかない。
- テキストリテラル
- 数値リテラル
- 真偽値リテラル
- null リテラル

Thymeleaf のみでは List を定義することはできないみたい。

SpEL の利用

"Spring Expression langage" 通称 SpEL で、Spring 版の EL式。
SpEL ではリテラルとして次のものなどが利用できる。
- strings
- dates
- numeric values (int, real, and hex)
- boolean
- null
- lists
- maps
- arrays

つまり List を定義できる。

List の定義は {'1', '2', '3'} と書ける。

結論

<div th:if="${#lists.contains({'1', '2', '3'}, element)}"> ...

こう書ける。

スッキリ書けて良かった。

蛇足

実は JavaScript ライクに ['1', '2', '3'] と書こうとしたんだけど、これだと配列とかに使う arrays[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
2