一、用法
在Thymeleaf中,使用th:if指令来检查一个条件并决定是否呈现一些HTML元素或部分。在下面的示例中,只有当user对象不为null且其属性name不为空时,才会呈现"Welcome back"消息。<div th:if="${user != null and user.name != null}">
<h2>Welcome back, <span th:text="${user.name}"></span>!</h2>
</div>
在这个例子中,我们在
标签中使用th:if指令来检查条件。如果条件评估为true,则
标签及其内容将被渲染。反之,如果条件评估为false,则完全跳过这段HTML代码。
二、扩展功能
除了简单的用法,th:if指令还有一些高级用法和扩展功能。1. th:if和th:unless的对比
除了th:if指令外,Thymeleaf还提供了th:unless指令来检查条件是否为false。前面的例子可以使用th:unless指令重写,如下所示:<div th:unless="${user == null or user.name == null}">
<h2>Welcome back, <span th:text="${user.name}"></span>!</h2>
</div>
在这个例子中,我们将th:if变成了th:unless。两者的效果是一样的。th:unless指令的作用是检查一个条件是否为false,如果条件为false,则执行它的内容。
2. th:if和th:switch的对比
与Java或C++类似,Thymeleaf也提供了一个switch指令来检查一个值的多个可能性。在下面的示例中,我们将使用th:switch指令检查grade属性的值并分别呈现不同的HTML内容。<div th:switch="${user.grade}">
<p th:case="'A'">Congratulations, you have an A grade!</p>
<p th:case="'B'">Good job, you have a B grade.</p>
<p th:case="'C'">You only got a C grade. Try harder next time.</p>
<p th:case="*">I'm sorry, I cannot display your grade.</p>
</div>
在这个示例中,我们使用th:switch指令来检查user.grade属性的值。如果它等于'A',则呈现一个祝贺消息;如果它等于'B',则呈现一个鼓励消息;如果它等于'C',则呈现一个鼓励下次争取的消息;如果它不是以上任何一个选项,则显示一个错误消息。
3. th:if和变量的对比
在Thymeleaf中,可以使用th:with指令创建一个新的变量,它可以在当前元素及其所有子元素中使用。在下面的示例中,我们将使用th:with指令创建一个新的变量isVip,来跟踪用户是否是VIP。<div th:with="isVip=${user.isVip}">
<h2 th:if="${isVip}">Welcome, VIP!</h2>
<p th:unless="${isVip}">Welcome, <span th:text="${user.name}"></span>!</p>
</div>
在这个示例中,我们使用th:with指令来创建一个新的变量isVip,他的值等于user.isVip。然后,我们在