Thymeleafでのブール値の操作
1. 序章
このクイックチュートリアルでは、Thymeleafでブール値を操作する方法を見ていきます。
詳細に入る前に、Thymeleafの基本はこの記事にあります。
2. 式をブール値として評価する
- ヌル
- ブール値false
- 番号0
- 文字\0
- 文字列「false」、「off」および「no」
その他の値はtrueと評価されます。
3. レンダリング条件としてのブール値の使用
HTML要素を条件付きでレンダリングするには、 th:if属性とth:unless属性の2つのオプションがあります。
それらの効果は正反対です。Thymeleafは、属性の値が true であり、 th :unless属性の場合にのみ、 th:if属性を持つ要素をレンダリングします。その値がfalseの場合:
<span th:if="${true}">will be rendered</span>
<span th:unless="${true}">won't be rendered</span>
<span th:if="${false}">won't be rendered</span>
<span th:unless="${false}">will be rendered</span>
4. 論理演算子と条件演算子
さらに、Thymeleafでは次の3つの古典的な論理演算子を使用できます。
- と
- また
- または「!」ではなくキーワードによる否定シンボル
これらの演算子は、変数式内で使用することも、複数の変数式を組み合わせて使用することもできます。
<span th:if="${isRaining or isCold}">The weather is bad</span>
<span th:if="${isRaining} or ${isCold}">The weather is bad</span>
<span th:if="${isSunny and isWarm}">The weather is good</span>
<span th:if="${isSunny} and ${isWarm}">The weather is good</span>
<span th:if="${not isCold}">It's warm</span>
<span th:if="${!isCold}">It's warm</span>
<span th:if="not ${isCold}">It's warm</span>
<span th:if="!${isCold}">It's warm</span>
if-then 、 if-then-else 、およびデフォルトの演算子の条件演算子を使用することもできます。
if-then-else 演算子は通常の三項、または?:演算子:
It's <span th:text="${isCold} ? 'cold' : 'warm'"></span>
さらに、 if-then 演算子は、他の部分がない簡略化されたバージョンです。
<span th:text="${isRaining or isCold} ? 'The weather is bad'"></span>
デフォルトの演算子は、 null でない場合は最初のオペランドを返し、そうでない場合は2番目のオペランドを返します。
<span th:text="'foo' ?: 'bar'"></span> <!-- foo -->
<span th:text="null ?: 'bar'"></span> <!-- bar -->
<span th:text="0 ?: 'bar'"></span> <!-- 0 -->
<span th:text="1 ?: 'bar'"></span> <!-- 1 -->
デフォルトの演算子は、エルビスのヘアスタイルに非常に似ているため、エルビス演算子とも呼ばれます。
エルビス演算子はnullチェックのみを実行し、最初のオペランドをブール値として評価しないことに注意してください。
5. #boolsユーティリティオブジェクト
#bools は、デフォルトで式で使用できるユーティリティオブジェクトであり、いくつかの便利なメソッドがあります。
- #bools.isTrue(obj)は、引数がtrueに評価されるかどうかを返します。
- #bools.isFalse(obj)は、引数がfalseに評価されるかどうかを返します。
- #bools.xxxIsTrue(collection)は#bools.isTrue()を使用して引数の要素をブール値に変換し、それらを同じタイプのコレクションに収集します
- #bools.xxxIsFalse(collection)は#bools.isFalse()を使用して引数の要素をブール値に変換し、それらを同じタイプのコレクションに収集します
- #bools.xxxAnd(collection)は、引数のすべての要素が true と評価された場合、trueを返します。
- #bools.xxxOr(collection)は、引数のいずれかの要素が true と評価された場合、trueを返します。
上記のメソッドでは、 xxx は、メソッドの引数に応じて、 array 、 list 、または set のいずれかになります( xxxIsTrue()および xxxIsFalse())。
6. 結論
この記事では、Thymeleafが値をブール値として解釈する方法と、要素を条件付きでレンダリングしてブール式を処理する方法について説明しました。
いつものように、コード(より多くの例を含む)はGithubで利用できます。