首页 > 解决方案 > Thymeleaf - 基于对象属性值的条件渲染

问题描述

<tr th:each="student: ${students}">
    <td th:text="${student.id}" />
    <td th:text="${student.name}" />
</tr>

我有 10 个不同名字的学生。如果至少有 1 个学生的 student.name == "Felix",我只想渲染整个表格。否则我不想渲染表格。

我怎样才能做到这一点?

标签: javathymeleaf

解决方案


在返回此模板的控制器中,检查 Java 中的列表。如果你找到 "Felix".equals(student.name) 然后在上下文中添加一个像 'isRenderTable' 这样的变量,并在 Thymeleaf 中的表上做一个条件,比如:

<table th:if="${isRenderTable}">...</table>

如果你不想接触服务器端代码,那么你可以使用 Thymeleaf 和 JavaScript。将学生列表渲染成JS,然后用JS进行你想要的逻辑比较,再通过JS渲染表格。

另一种方法是将学生列表渲染到 JS 中,并在 Thymeleaf 中渲染表格(并使用 CSS 隐藏表格),然后在 JS 中如果检测到适当的条件,更改 CSS 以显示表格。


推荐阅读