我正在编写一个应该呈现员工列表的模板。员工以部门名单的形式传递给Thymeleaf,每个部门都有自己的员工名单。
我的任务是展示它们 - 问题是处理连续的计算。每个员工都应该显示为下一个号码的行。
以下尝试允许为给定部门的员工编制索引,每个部门都有新的编号:
<table th:each="department, depStatus : departmentList">
<tr th:each="employee, empStatus : department.employees">
<td th:inline="text">[[${empStatus.index+1}]]</td>
但我的意思是通过所有部门保持连续计算,就像这样:
1. Employee A from Dept X
2. Employee B from Dept X
3. Employee C from Dept Y
我知道我可以在服务器端使这个结构平坦,但我无法相信这是唯一的方法。
我还尝试使用th:with="idx = 0"
来引入局部变量,然后使用th:with="idx = ${idx} + 1
将其递增到某处,但这只会覆盖idx
值。{/ p>
答案 0 :(得分:4)
您要实现的目标是更新局部变量,并使新值在比更新更广泛的范围内可见。这就是为什么它与定义相矛盾的原因。 我认为您无法避免进行某些服务器端调整,例如根据您的建议提供一些更平坦的结构视图。
另一方面,一个快速的解决方案,(假设你不是严格意义上使用一个表),它可能在使用th:block为封闭部门时尝试一个有序列表:
<ol>
<!--/*/ <th:block th:each="dept : ${departmentList} "> /*/-->
<li th:each="emp : dept.employees" th:text="|${emp.name} from ${dept.name}|"></li>
<!--/*/ </th:block> /*/-->
</ol>
答案 1 :(得分:1)
<div th:each="department : ${departmentList}">
<div th:each="employee : ${department.employees}">
<div th:text="${#ids.seq ('')}"></div>
</div>
</div>
查看文档 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#ids
答案 2 :(得分:0)
对于任何与循环相关的操作,您应该能够使用iterationStatus实用程序
查看以下代码以显示迭代项的索引。
<tr th:each="emp,iterStat : ${employess}">
<td th:text="${iterStat.count}"></td>
<td th:text="${emp.name}"></td>
<td th:text="${emp.department}"></td>
</tr>