1. ホーム
  2. java

[解決済み] Thymeleafでif-elseを行うには?

2022-05-11 16:02:42

質問

シンプルな if - else をThymeleafで?

と同じ効果をThymeleafで実現したいのですが。

<c:choose>
  <c:when test="${potentially_complex_expression}">
     <h2>Hello!</h2>
  </c:when>
  <c:otherwise>
     <span class="xxx">Something else</span>
  </c:otherwise>
</c:choose>

をJSTLで使用します。

ここまででわかったこと

<div th:with="condition=${potentially_complex_expression}" th:remove="tag">
    <h2 th:if="${condition}">Hello!</h2>
    <span th:unless="${condition}" class="xxx">Something else</span>
</div>

を評価したくありません。 potentially_complex_expression を2回実行します。そのため、ローカル変数 condition . それでも、私は th:if="${condition}th:unless="${condition}" .

重要なのは、2つの異なるHTMLタグを使用していることです。 h2span .

より良い実現方法を提案していただけませんか?

どのように解決するのですか?

Thymeleaf には、次のようなものがあります。 <c:choose><c:when> を使用します。 th:switchth:case 属性は、Thymeleaf 2.0 で導入されました。

これらは期待通りに動作します。 * はデフォルトの場合です。

<div th:switch="${user.role}"> 
  <p th:case="'admin'">User is an administrator</p>
  <p th:case="#{roles.manager}">User is a manager</p>
  <p th:case="*">User is some other thing</p> 
</div>

参照 これ は、構文についての簡単な説明(またはThymeleafチュートリアル)。

免責事項 : StackOverflowの規則により、私はThymeleafの作者です。