对于 Thymeleaf 中的每个运算符

Posted

技术标签:

【中文标题】对于 Thymeleaf 中的每个运算符【英文标题】:For each operator in Thymeleaf 【发布时间】:2016-08-13 04:22:28 【问题描述】:

我在Thymeleaf 模板中找不到用于构建简单for-each-loop 的语法。 我对 th:each="" 属性不满意,因为它复制了它所在的标签。

我正在寻找的是这样的:

<th:foreach th:each="...">
...block to be repeated...
</th>

Tapestry 中的 &lt;c:forEach items="..." var="..."&gt;&lt;t:loop source="..." value="..."&gt; 是什么类似物。有什么类似的吗?

【问题讨论】:

【参考方案1】:

按照 Thymeleaf 指南中的说明使用 th:block

th:block 只是一个属性容器,它允许模板开发人员指定他们想要的任何属性。 Thymeleaf 将执行这些属性,然后简单地使块消失得无影无踪。

因此它可能很有用,例如,在创建每个元素需要多个 &lt;tr&gt; 的迭代表时:

<table>
   <th:block th:each="user : $users">
      <tr>
         <td th:text="$user.login">...</td>
         <td th:text="$user.name">...</td>
      </tr>
      <tr>
         <td colspan="2" th:text="$user.address">...</td>
      </tr>
   </th:block>
</table>

【讨论】:

我看不出与 my implementation 的区别...知道为什么它不适合我吗?【参考方案2】:

th:block 解决方案绝对是最好的解决方案,但您也可以尝试使用th:remove="tag" 来删除包含标签:

<table>
   <tbody th:each="user : $users" th:remove="tag">
      <tr>
         <td th:text="$user.login">...</td>
         <td th:text="$user.name">...</td>
      </tr>
      <tr>
         <td colspan="2" th:text="$user.address">...</td>
      </tr>
   </tbody>
</table>

这种方法的好处是您还可以将 Thymeleaf 表达式传递给th:remove,以便仅有条件地删除标签,例如如果您只想将一些用户包含在&lt;tbody&gt; 中,并且还有其他有趣的用途。

Here 是th:remove 的文档。

【讨论】:

th:remove 是我猜到的,但还没有尝试过 :-) 非常感谢。 @ekemchitsiga 是第一个,所以他的回答将被接受。也给你 +1 :)

以上是关于对于 Thymeleaf 中的每个运算符的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot——Thymeleaf中的四种字面量(文本数字布尔null)字符串拼接运算符

无法从 Thymeleaf 中的模型对象设置默认 CSS 变量

Thymeleaf学习记录--运算及表单

使用默认值声明 Thymeleaf 变量后如何对其进行算术运算?

springBoot使用:thymeleaf 三目运算的问题

初始化列表:复制构造函数和赋值运算符 = 冗余?