在Thymeleaf中如何做if-else?

2022-08-31 07:18:01

在百里香叶做一个简单的方法是什么?ifelse

我想在百里香叶中达到与

<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_expressionconditionth:if="${condition}th:unless="${condition}"

重要的是,我使用了两个不同的HTML标签:假设和。h2span

你能建议一个更好的方法来实现它吗?


答案 1

Thymeleaf 有一个等价物和 :Thymeleaf 2.0 中引入的 and 属性。<c:choose><c:when>th:switchth:case

它们按预期工作,用于默认大小写:*

<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的作者。


答案 2

我尝试了此代码,以确定客户是登录还是匿名。我确实使用了和条件表达式。非常简单的方法。th:ifth:unless

<!-- IF CUSTOMER IS ANONYMOUS -->
<div th:if="${customer.anonymous}">
   <div>Welcome, Guest</div>
</div>
<!-- ELSE -->
<div th:unless="${customer.anonymous}">
   <div th:text=" 'Hi,' + ${customer.name}">Hi, User</div>
</div>