如何在循环中添加 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 的东西,但不想输出任何你应该使用的东西 <th:block />
- 而不是将 <p />
或 <span />
标签直接放在表格行中。)
【讨论】:
以上是关于如何在循环中添加 Thymeleaf 变量中的值并在完成循环后显示最终值的主要内容,如果未能解决你的问题,请参考以下文章
@ModelAttribute 使用 thymeleaf 返回空值
如何比较两个for循环的值并在django模板中使用if语句?
Java-Spark:如何在循环中迭代时获取 Dataset<Row> 列的值并在 when().otherwise() 中使用它?