Tengo una lista de «producto» que quiero mostrar como una lista de fila de una tabla usando una plantilla html.

El html de la plantilla parece:

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

Aquí es lo que yo hice:

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

Si puedo usar th:include, habrá tr anidada para cada tr
Si yo uso th:substituteby, sustituto tiene la prioridad en th:each

No puedo encontrar una manera de reemplazar mi bucle de artículos por otros.

Alguien tiene una solución para ello?

InformationsquelleAutor fliim | 2013-05-29

2 Comentarios

  1. 10

    Lo tengo:

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

    Y aquí, se puede mantener la plantilla de la clase en el tr elemento (que lo que yo quería)

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

    aquí está el resultado:

    <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>

    gracias a danielfernandez de la oficial thymeleaf foro

  2. 0

    th:incluye es lo que usted está buscando. El siguiente código funciona para mí. Yo prefiero poner varios fragmentos en un archivo, así que he incluido aquí.

    <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>
    ...

Dejar respuesta

Please enter your comment!
Please enter your name here