Thymeleaf th:each 用 th:if 过滤

Posted

技术标签:

【中文标题】Thymeleaf th:each 用 th:if 过滤【英文标题】:Thymeleaf th:each filtered with th:if 【发布时间】:2015-06-17 18:20:02 【问题描述】:

我需要为components 数组中的每个component 迭代和创建<span> 元素,该数组具有name'MATERIAL'

我的代码如下

<span th:each="component : $body.components" 
      th:object="$component">
        <button th:if="*name == 'MATERIAL'" 
                th:text="*title"></button>
</span>

如果name 不等于'MATERIAL',则此代码运行良好,直到产生一组空的&lt;span&gt; 元素。我不希望创建这个空的 &lt;span&gt; 元素。

我也尝试了以下

<span th:each="component : $body.components" 
      th:object="$component"
      th:if="*name == 'MATERIAL'">
         <button th:text="*title"></button>
</span>

这会导致空输出并且根本不打印任何内容。有人可以帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

您应该使用点 (.) 符号直接引用迭代项属性,而不是在 html 元素中通过 SpEL 表达式评估 (*name):

<span th:each="component : $body.components" 
      th:object="$component"
      th:if="$component.name == 'MATERIAL'">
  <button th:text="*title"></button>
</span>

【讨论】:

谢谢。这解决了问题。

以上是关于Thymeleaf th:each 用 th:if 过滤的主要内容,如果未能解决你的问题,请参考以下文章

thymeleaf3.0学习

Thymeleaf 迭代,if,switch语法

Spring+thymeleaf

Thymeleaf模板引擎语法

在Thymeleaf中,用th:each怎么实现由ajax控制的分页列表展示

Thymeleaf: th:each 排除任何特定值