gpt4 book ai didi

java - 迭代列表并基于 Thymeleaf 模板创建新行

转载 作者:行者123 更新时间:2023-12-02 11:17:13 24 4
gpt4 key购买 nike

我正在迭代我的产品列表并像这样设置变量

List<InvoiceEntry> products = invoice.getProducts();

for (InvoiceEntry product : products) {
BigDecimal netValue = product.getProduct().getNetValue()
.setScale(2, RoundingMode.HALF_UP);
double vatRate = product.getProduct().getVatRate().getVatPercent();
BigDecimal vatValue = netValue.multiply(BigDecimal.valueOf(vatRate))
.setScale(2, RoundingMode.HALF_UP);
long amount = product.getAmount();

context.setVariable("productName",product.getProduct().getName());
context.setVariable("amount", product.getAmount());
context.setVariable("retailPrice", netValue + "zł");
context.setVariable("productNetValue",
netValue.multiply(BigDecimal.valueOf(amount)) + "zł");
context.setVariable("productVatRate", (int) (vatRate * 100) + "%");
context.setVariable("productVatValue",
vatValue.multiply(BigDecimal.valueOf(amount)) + "zł");
context.setVariable("total",
netValue.add(vatValue).multiply(BigDecimal.valueOf(amount)) + "zł");
}

String body = templateEngine.process("template", context);
emailSender.sendEmail("someEmail@gmail.com", "some title", body);
return "index";

模板片段

<table width="100%" cellpadding="0" cellspacing="0">
<tr bgcolor="D0D0D0">
<td height="50" align="center"><h2 th:text="Name"></h2></td>
<td height="50" align="center"><h2 th:text="Amount"></h2></td>
<td height="50" align="center"><h2 th:text="RetailPrice"></h2></td>
<td height="50" align="center"><h2 th:text="NetValue"></h2></td>
<td height="50" align="center"><h2 th:text="VatRate"></h2></td>
<td height="50" align="center"><h2 th:text="VatValue"></h2></td>
<td height="50" align="center"><h2 th:text="Total"></h2></td>
</tr>
<tr bgcolor="ffffff">
<td height="50" align="center"><h2 th:text="${productName}"></h2></td>
<td height="50" align="center"><h2 th:text="${amount}"></h2></td>
<td height="50" align="center"><h2 th:text="${retailPrice}"></h2></td>
<td height="50" align="center"><h2 th:text="${productNetValue}"></h2></td>
<td height="50" align="center"><h2 th:text="${productVatRate}"></h2></td>
<td height="50" align="center"><h2 th:text="${productVatValue}"></h2></td>
<td height="50" align="center"><h2 th:text="${total}"></h2></td>
</tr>
</table>

问题是如何在不丢失以前数据的情况下创建新行的新元素?例如,我想实现这样的目标 enter image description here

到目前为止,由于覆盖,我仍然只能从列表中获取最后一个元素。 我是 Thymeleaf 的新手,非常感谢每一个帮助和提示;)

最佳答案

您无需将每个单独的属性放在一起,而是将产品列表放在模型上。然后使用 th:each 对其进行循环。

Controller

context.setVariable("products", products);

模板

<tr bgcolor="ffffff" th:each="product: ${products}">
<td height="50" align="center"><h2 th:text="${product.product.name}"></h2></td>
<td height="50" align="center"><h2 th:text="${product.amount}"></h2></td>
.
.
.
</tr>

关于java - 迭代列表并基于 Thymeleaf 模板创建新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50191617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com