springboot中使用thymeleaf语法的a标签不是超链接

问题描述:在创建的springboot项目中,index.html页面中使用thymeleaf语法加持的a标签失去超链接作用,在浏览器只打印文本,不能实现跳转。

展示:

在这里插入图片描述

从下图我们可以看出,普通a标签正常打印,而使用thymeleaf语法的a标签失去了超链接功能。
在这里插入图片描述

为什么呢?
我先说原因:如果想使用thymeleaf的功能,index.html就不能放在默认静态资源路径下(如:static,public,resources,或者自定义的静态资源路径,总之是静态资源路径就不行)
那放在哪?
可以放在默认templates路径下,或者自定义修改thymeleaf渲染前缀(默认是templates)。

将index.html放到templates路径下

在这里插入图片描述

这时不管是普通a标签,还是引入thymeleaf语法的a标签都正常了。

在这里插入图片描述

解释:
默认静态资源路径下(statice,public,resources,或自定义的静态资源路径等)是放静态页面的,它们里的资源可以在浏览器通过资源名直接访问到,也就是说没有通过thymeleaf的渲染解析技术,用thymeleaf的语法无效,即使用了浏览器页面也不识别,因为没有经过thymeleaf解析渲染这一层。
templates是专门放动态页面的(thymeleaf渲染默认前缀),在浏览器通过资源名访问不到,只能通过我们的目标方法(XXXMapping())返回的String名,然后经过thymeleaf解析渲染(如果是String前缀带forwoad/redirect另说),所以里面的thymeleaf语法被解析后浏览器可以识别。
我们的index.html放到templates通过apach/Nginx等代理服务器(我们不需要配置,依赖里已经弄好了),在浏览器输入localhost:8080能直接访问index.html页面。

举一反三:
有的同学说:我的index.html就是放在templates路径下的,使用thymeleaf语法的a标签还是没有超链接
那是因为你的配置文件中templates这个名字被占用,然后赋予了其它功能(设置为静态资源路径),templates原本的功能失效。
看看是不是配置了它:
在这里插入图片描述

注意:我们学东西不能只学表面,更要知道它的原理。
解析thymeleaf语法的不是templates,不是说靠着templates这个路径名就能实现解析,之所以放到templates路径下thymeleaf语法能够被解析,是因为我们引入的thymeleaf依赖里的默认解析前缀路径名是templates。我可以改为其它前缀名,真正渲染解析的是thymeleaf。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lazyKinh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值