Thymeleaf模版遍历JSON对象

本文介绍了在Thymeleaf模板中处理JSON对象的方法,虽然Thymeleaf支持映射和类解析,但作者选择使用JSON,探讨了如何在Java中遍历JSON并应用到Thymeleaf模板。同时,文章提到了Thymeleaf在处理Spring Boot的Page对象上的应用,并指出Thymeleaf的XML检测特性对HTML标签完整性检查的益处,但其对页面内嵌JS脚本转义符的支持不足,提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源http://www.jianshu.com/p/116ac62ee701

背景

Thymeleaf模版很多地方确实很方便,但是在处理JSON对象时遇到了一些问题,就觉得很有意思记录一下,以供自己备忘,同时给有类似需求的同学参考一下,希望大家都能尽快解决问题,早点下班,回家遛狗~
在说正题之前,可能大家有个问题,其实Thymeleaf本身提供了一个map进行映射,还支持直接传class进行解析,那么为啥还要用JSON。其实我仔细想了一下,确实也没有一定要用JSON的必要,我就是 这么贱啊,JSON多方便,我偏要~(好吧,打人就算了,请勿打脸,大雾 但是从中我们可以进一步感受Thymeleaf具体处理起来的一些有意思的方式。

具体处理

其实使用Thymeleaf最本质的地方在于对其自身的在理解,它是一个基于java的解析工具,主要还是在服务端本身进行了内容的替换,因此还是比较类似jsp的处理,而非一个真正意义的前端工具,它所有可以使用的函数都是基于java本身的。
因此对于JSON的遍历,其实也就是和java中对json的遍历一致,具体处理如下所示:

<table class="am-table am-table-bd am-table-bdrs am-table-striped am-table-hover">                        
  <tbody 
Thymeleaf 中,虽然它主要用于 HTML 模板渲染,并不直接支持复杂的编程逻辑,但可以通过内联表达式或与后端模型数据结合的方式来定义和操作对象数组。以下是一些定义和使用对象数组的方法或语法: ### 在 Thymeleaf 模板中定义对象数组 1. **通过模型属性传递对象数组** 在 Spring MVC 控制器中,可以将对象数组作为模型属性传递给 Thymeleaf 模板。例如,在控制器中添加一个对象数组: ```java @Controller public class MyController { @GetMapping("/example") public String example(Model model) { User[] users = new User[] { new User("Alice", 25), new User("Bob", 30) }; model.addAttribute("users", users); return "example"; } } ``` 在 Thymeleaf 模板中,可以通过 `th:each` 遍历该数组并渲染内容: ```html <div th:each="user : ${users}"> <p th:text="${user.name} + ' (' + user.age + ')'"></p> </div> ``` 2. **在 Thymeleaf 表达式中定义数组** Thymeleaf 支持在表达式中使用数组字面量,但对象数组通常需要通过 Java 模型属性传递。如果需要在模板中直接定义基本类型数组,可以使用如下语法: ```html <p th:text="${#arrays.asList('Apple', 'Banana', 'Cherry')}"></p> ``` 对于对象数组,可以通过内联 Java 表达式定义,但需注意 Thymeleaf 对复杂对象的处理能力有限。例如: ```html <p th:text="${T(java.util.Arrays).asList(T(java.math.BigDecimal).valueOf(10.5), T(java.math.BigDecimal).valueOf(20.3))}"></p> ``` 3. **使用 Thymeleaf 工具类处理数组** Thymeleaf 提供了一些工具类(如 `#arrays`)来操作数组。例如,检查数组是否为空或获取数组长度: ```html <div th:if="${not #arrays.isEmpty(users)}"> <p>Number of users: <span th:text="${#arrays.length(users)}"></span></p> </div> ``` 4. **通过 JavaScript 传递对象数组** 如果需要将对象数组传递给前端 JavaScript,可以在 Thymeleaf 模板中嵌入 JSON 数据: ```html <script th:inline="javascript"> /*<![CDATA[*/ var users = /*[(${#arrays.asList('Alice', 'Bob', 'Charlie')})]*/ []; /*]]>*/ console.log(users); </script> ``` 上述代码会将 Thymeleaf 表达式解析为 JavaScript 数组。 ### 示例:定义并遍历对象数组 假设有一个 `User` 类,包含 `name` 和 `age` 字段: ```java public class User { private String name; private int age; // Constructor, getters, and setters } ``` 在控制器中传递 `User[]` 给模板: ```java model.addAttribute("users", new User[] { new User("Alice", 25), new User("Bob", 30) }); ``` 在 Thymeleaf 模板中遍历并渲染: ```html <ul> <li th:each="user : ${users}" th:text="${user.name + ' (' + user.age + ')'}"></li> </ul> ``` 这样可以实现对对象数组的定义和展示。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值