gpt4 book ai didi

java - 如何使用 :switch and th:each 处理 thymeleaf 中的两个列表

转载 作者:行者123 更新时间:2023-12-04 07:58:05 25 4
gpt4 key购买 nike

我从数据库中获取一个对象列表,并使用 th:switch 和 th:each 在带有 thymeleaf 引擎的 html 页面内迭代该列表。现在我想将这个列表中每个对象的一个​​属性更改为另一种格式,问题是我如何在 thymeleaf 的 switch 语句中的另一个列表中使用这些格式化的值,以及它与第一个列表中的相应对象。
下面显示了我如何在每个对象中循环以获取 的值getKinachoitajika() 这是一个在输出中显示为 5.0E7 的双数,现在我将其格式化以显示正常数字,如 50,000,000,并将这些值放入 数组列表 arrItajika 并在循环遍历第一个列表的对象时在 html 文件中使用它们。

@GetMapping("/joinMichangoQuery")
public String kandaAndParokia(Model model){
List<Kmichango> listKandaAndParokia = kMichangoRepository.findAll();
ArrayList arrItajika = new ArrayList<>();
for(int i=0; i< listKandaAndParokia.size(); i++){
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(0);
arrItajika.add(nf.format(listKandaAndParokia.get(i).getKinachoitajika()));
}
model.addAttribute("listKandaAndParokia", listKandaAndParokia);
model.addAttribute("itajikaFromated", arrItajika);
return "michango_joined";
}
现在在 michango_joined.html 中,我遍历每个对象的所有值并将它们显示在表上,如下所示。
        <div th:switch="${listKandaAndParokia}" class="container my-5">
<h2 th:case="null">No Michango</h2>
<div th:case="*">
<table class="table table-bordered table-striped table-responsive-md">
<thead class="thead-dark">
<tr>
<th>ID</th>
<th>KandaID</th>
<th>Kinachohitajika</th>
<th>Kilichopatikana</th>
<th>Hali</th>
<th>Jina La Mchango toka Parokia Michango</th>
<th></th>
</tr>
</thead>
<tbody>
<tr th:each="kMchango : ${listKandaAndParokia}">
<td th:text= "${kMchango.id}"></td>
<td th:text= "${kMchango.kandaId.kandaName}"></td>
<td th:text= "${kMchango.kinachoitajika}"></td>
<td th:text= "${kMchango.kilichopatikana}"></td>
<td>[[${kMchango.mchangoParokia.status}]]</td>
<td th:text= "${kMchango.mchangoParokia.mchangoJina}"></td>
</tr>
</tbody>
</table>
</div>
</div>
现在我想使用 的值ArrayList arrItajika 与开关内的每个对应对象一起显示,这意味着我想替换这个 "${kMchango.kinachoitajika}"和我的 arrItajika 在 thymeleaf 中,我如何执行这种交互,或者是否有关于如何处理此问题的其他建议。
更新:
我已经添加了存储库文件
public interface KmichangoRepository extends JpaRepository <Kmichango, String> {
@Query(value = "SELECT * FROM michango_kanda INNER JOIN michango ON michango_kanda.mchango_code = michango.mchango_code",nativeQuery = true)
public List<Kmichango> getKandaAndParokiaByMichangoCode();


}

最佳答案

如果两个列表的索引相等,则可以使用 th:each带索引。见 Thymeleaf - How to loop a list by index

<tr th:each="kMchango,iter: ${listKandaAndParokia}">
...
<td th:text= "${itajikaFromated[iter.index]}"></td>
...
</tr>
或者,创建一个结合 Kmichango 的新类。带有一个额外的字段,它是格式化的值,并且在您的模型中只有 1 个列表,其中包含该新型类的元素。
最后,您还可以在模板本身中进行格式化:
<span th:text="${#numbers.formatDecimal(kMchango.kinachoitajika, 0, 'COMMA', 2, 'POINT')}">

关于java - 如何使用 :switch and th:each 处理 thymeleaf 中的两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66599912/

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