Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Pegar objeto no Thymeleaf

Prezados Tenho a seguinte montagem, conforme descrito no capítulo do curso, funcionando normalmente:

<table>
                <thead>
                <tr>
                    <th>Tipo</th>
                    <th>Descrição</th>
                    <th>Taxa de Juros</th>
                    <th>Primeira Parcela</th>
                    <th>Ultima Parcela</th>
                </tr>
                </thead>
                <tbody>
                    <tr th:text="simulacao : ${resumidos}">
                        <td th:text="${simulacao.tipo}"></td>
                        <td th:text="${simulacao.descricao}"></td>
                        <td th:text="${simulacao.taxaJuros}"></td>
                        <td th:text="${simulacao.valParcelaI}"></td>
                        <td th:text="${simulacao.valParcelaF}"></td>
                    </tr>
                </tbody>
            </table>

Como posso fazer para que o thymeleaf rode o forEach apenas nos campos simulacao.valParcelaI e simulacao.valParcelaF, e do demais sejam lidos apenas umas vez?

1 resposta
solução!

Olá Flávio,

Para fazer o Thymeleaf rodar o forEach apenas nos campos simulacao.valParcelaI e simulacao.valParcelaF, você pode utilizar a diretiva th:each em vez de th:text. A diretiva th:each permite que você itere sobre uma lista de objetos e execute uma ação para cada objeto. No seu caso, você pode criar uma lista com apenas os campos simulacao.valParcelaI e simulacao.valParcelaF e iterar sobre ela. Veja como ficaria o código:

<table>
    <thead>
        <tr>
            <th>Tipo</th>
            <th>Descrição</th>
            <th>Taxa de Juros</th>
            <th>Primeira Parcela</th>
            <th>Ultima Parcela</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="parcela : ${#lists.asList(simulacao.valParcelaI, simulacao.valParcelaF)}">
            <td th:if="${#vars.index == 0}" th:text="${simulacao.tipo}"></td>
            <td th:if="${#vars.index == 0}" th:text="${simulacao.descricao}"></td>
            <td th:if="${#vars.index == 0}" th:text="${simulacao.taxaJuros}"></td>
            <td th:text="${parcela}"></td>
            <td th:if="${#vars.index == 1}" th:text="${simulacao.valParcelaF}"></td>
        </tr>
    </tbody>
</table>

Nesse código, a lista é criada com os campos simulacao.valParcelaI e simulacao.valParcelaF utilizando o método estático asList da classe Lists. Depois, a diretiva th:each itera sobre essa lista e a variável parcela recebe cada um dos valores. As diretivas th:if são utilizadas para garantir que os campos Tipo, Descrição e Taxa de Juros sejam lidos apenas uma vez.

Espero ter ajudado e bons estudos!