8

我有一个“产品”列表,我想使用 html 模板将其显示为行表列表。

html 模板如下所示:

<tr th:fragment="productTemplate">
    <td th:text="${productName}">product name</td>
    <td th:text="${productprice}>product price</td>
</tr>

这是我所做的:

<table>
  <tr th:each="product : ${products}" th:substituteby="product :: productTemplate" th:with="productName=*{name}, productPrice=*{price}" />
</table>

如果我使用th:include,将有 tr 嵌套到每个tr 如果我使用th:substituteby,则替换具有优先级th:each

我找不到用另一个替换我的循环项目的方法。

有人有解决方案吗?

4

2 回答 2

13

我知道了:

<table>
  <tr th:each="product : ${products}" th:include="product :: productTemplate" 
      th:with="productName=${product.name}, productPrice=${product.price}" 
      th:remove="tag" />
</table>

在这里,我们可以将模板类保留在tr元素上(这是我想要的)

<tbody th:fragment="productTemplate">
  <tr class="my-class">
    <td th:text="${productName}">product name</td>
    <td th:text="${productPrice}">product price</td>
  </tr>
</tbody>

结果如下:

<table>
  <tr class="my-class">
    <td>Lettuce</td>
    <td>12.0</td>
  </tr>
  <tr class="my-class">
    <td>Apricot</td>
    <td>8.0</td>
  </tr>
</table>

感谢官方百里香论坛danielfernandez

于 2013-06-18T09:50:33.453 回答
0

th:include 是您要查找的内容。下面的代码对我有用。我更喜欢将多个片段放在一个文件中,因此我将其包含在此处。

<table>
    <tr th:each="product : ${products}" th:include="/fragments/productFragment :: productRow" />
</table>
...

/fragments/productFragment.html
...
<tr th:fragment="productRow">
    <td th:text="${product.productName}">product name</td>
    <td th:text="${product.productPrice}">product price</td>
</tr>
...
于 2013-06-05T16:36:57.660 回答