如何在循环中添加 Thymeleaf 变量中的值并在完成循环后显示最终值

Posted

技术标签:

【中文标题】如何在循环中添加 Thymeleaf 变量中的值并在完成循环后显示最终值【英文标题】:How to add values in Thymeleaf variable in the loop and after complete loop display final value 【发布时间】:2018-07-11 09:32:28 【问题描述】:

我是产品设计单,我想使用表格在 thymeleaf 模板中显示所有产品,最后,我想在 thymeleaf 中显示所有产品的价格总和。如何定义全局变量并做到这一点?

<table th:with="totalPrice=0">
    <tr th:each="count,iterator: $product.paidService">
        <td th:text="$iterator.index+1"></td>
        <td th:text="$count.name"></td>
        <td>Paid</td>
        <td th:text="$count.price"></td>
        <p th:with="totalPrice=$totalPrice + count.price"> </p>
    </tr>
    <span th:text="$totalPrice"></span>
</table>

我将0 作为输出,但我想要所有产品价格的总和作为输出。

如何使变量全局化并解决我的问题?

【问题讨论】:

计算服务级别的总价并作为模型视图变量带到前端 查看第 14.1 章中aggregates.sum 的 Thymeleaf 文档。它非常接近您的用例:thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 【参考方案1】:

一般来说,一旦使用 th:with 定义变量,您就无法更改它。它们只是不适合那样使用。相反,它们是简单的临时变量。

Thymeleaf 也没有全局变量的概念。最接近的就是您放置在模型上的属性。

您可以为此使用collection projection:

<table>
    <tr th:each="count,iterator: $product.paidService">
        <td th:text="$iterator.index+1" />
        <td th:text="$count.name" />
        <td>Paid</td>
        <td th:text="$count.price" />
    </tr>

    <tr>
        <td colspan="3" />
        <td><b th:text="$#aggregates.sum(product.paidService.![price])" /></td>
    </tr>
</table>

(一般风格的 cmets。如果你想做 thymeleaf 的东西,但不想输出任何你应该使用的东西 &lt;th:block /&gt; - 而不是将 &lt;p /&gt;&lt;span /&gt; 标签直接放在表格行中。)

【讨论】:

以上是关于如何在循环中添加 Thymeleaf 变量中的值并在完成循环后显示最终值的主要内容,如果未能解决你的问题,请参考以下文章

python中for循环中的循环变量

@ModelAttribute 使用 thymeleaf 返回空值

如何比较两个for循环的值并在django模板中使用if语句?

循环获取数据库中的值并赋值给数组

如何在循环中读取数据框列值并检查每列的数据类型

Java-Spark:如何在循环中迭代时获取 Dataset<Row> 列的值并在 when().otherwise() 中使用它?