Thymeleaf使用小结

本文主要介绍了Thymeleaf在SpringBoot项目中的使用,包括自动配置、常用语法如变量、方法调用、内置对象、循环和逻辑判断等。Thymeleaf允许在HTML模板中使用OGNL表达式,并通过th:指令确保模板在静态环境下也能正常工作。此外,还提到了Thymeleaf的变量语法糖、内置对象如#strings的使用,以及如何进行字符串与对象值的拼接、运算和循环。文章最后简要提及了Thymeleaf在JS模板和片段替换等方面的应用。
摘要由CSDN通过智能技术生成

前言:

最近在写一个SpringBoot的博客系统,使用的是Thymeleaf模板,所以大致学习了一下其一些常用的点,这里记录一下,以后会不断补充。
参考自:https://www.cnblogs.com/msi-chen/p/10974009.html

自动配置

自动给我们默认分配了模版的前缀和后缀,我们只需要按部就班的将模版丢进去即可
springboot自动配置如果需要修改自动配置的前后缀,可以在配置文件中如(application.properties或application.yml)修改,如果使用application.properties,那么直接使用自动配置类中的prefix加要修改的属性值修改即可,如spring.thymeleaf.DEFAULT_PREFIX=classpath:/static

常用语法

变量

Thymeleaf通过${}来获取model中的变量,注意这不是el表达式,而是ognl表达式,但是语法非常像。
示例:
控制器:

@GetMapping("/test")
	public String test(Model model) {
   
		// 这里我模仿从数据库中取到的type用作示例
		Type type = new Type();
		type.setTypeName = "Java";
		model.addAttribute("type",type);
		return "demo";
	}

前台部分demo.html:

...
<!--感觉跟el表达式差不多的。区别在于,我们的表达式写在一个名为:th:text的标签属性中,这个叫做指令-->
<div class="item"  th:text="${type.typeName}">错误日志</div>
...

这里我省略了很多无关紧要的,然后这个div中显示的就是我控制器中加入model的数据type的typeName了。
这里讲下指令吧:
Thymeleaf崇尚模板是纯正的html代码,脱离模板引擎,在纯静态环境也可以直接运行。现在如果我们直接在html中编写 ${}这样的表达式,显然在静态环境下就会出错,这不符合Thymeleaf的理念。

Thymeleaf中所有的表达式都需要写在"指令"中,指令是HTML5中的自定义属性,在Thymeleaf中所有指令都是以th:开头。因为表达式${user.name}是写在自定义属性中,因此在静态环境下,表达式的内容会被当做是普通字符串,浏览器会自动忽略这些指令,这样就不会报错了。

如果我们不经过SpringMVC,而是直接用浏览器打开编写的页面:在静态环境下,th指令不会被识别,但是也不会报错,而是显示div标签的缺省默认值:“错误日志”

指令的设计,正是Thymeleaf的高明之处,也是它优于其它模板引擎的原因。动静结合的设计,使得无论是前端开发人员还是后端开发人员可以完美契合。

另外,th:text指令出于安全考虑,会把表达式读取到的值进行处理,防止html的注入。
例如,<p>你好</p>将会被格式化输出为 l t ; p lt;p lt;pgt;你好 l t ; / p lt;/p lt;/plt;。
如果想要不进行格式化输出,而是要输出原始内容,则使用th:utext来代替。

变量的语法糖

刚才获取变量值,我们使用的是经典的对象.属性名方式。但有些情况下,我们的属性名可能本身也是变量,怎么办?

ognl提供了类似js的语法方式:

例如:${user.name} 可以写作${user['name']}

接下来讲的是自定义变量:
先看原始示例:

<h2>
    <p>Name: <span th:text="${user.name}">Jack</span>.</p>
    <p>Age: <span th:text="${user.age}">21</span>.</p>
    <p>friend: <span th:text="${user.friend.name}">Rose</span>.</p>
</h2>

是不是觉得比较麻烦,对于这种都是来自一个变量的属性,有另一种简便的方法:

<h2 th:object="${user}">
    <p>Name: 
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值