web-dev-qa-db-ja.com

Thymeleaf th:それぞれth:ifでフィルタリング

<span>componentを持つcomponents配列のnameごとに'MATERIAL'要素を繰り返し作成する必要があります。

私のコードは以下の通りです

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

このコードは、name<span>と等しくない場合に、空の'MATERIAL'要素のセットが生成されるまですべて正常に機能します。この空の<span>要素を作成したくありません。

私も以下を試しました

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

これにより、出力が空になり、何も出力されません。誰かがこれについて私を助けてくれますか?.

10
Faraj Farook

Html要素内でSpEL式の評価(*{name})を実行する代わりに、ドット()記号を使用して反復アイテムプロパティを直接参照する必要があります。

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