基于springboot与Thymeleaf模板整合的新手常遇见的坑
虽说springboot与Thymeleaf整合十分的方便,但是这里面有很大的几个坑,作为初学springboot的新手来说肯定会遇到,而且问度娘也不一定解决了,以下,就是我初学springboot时经常遇到的几个坑。
(一)、首先,在html页面里面严禁出现这种书写方式
<a href="login.html" th:href="@{/providerAdd.html}">退出</a>
由于我们要用到Thymeleaf的标签,然后在便签里面写的是跳转的路径,记住,这里面写的一定是自己在controller层里面写的URL路径,而不是需要跳转html页面的路径,如果你要写成这样,它会默认当成controller层的URL路径,很明显你在controller层里面并没有写这样的URL路径,所以它会报404错误,找不到。
解决很简单,你只需要在controller层里面写个跳转到该页面的方法就行了,相比于我们之前学的SpringMVC来说确实多写一步,但是jsp几乎已经被淘汰了,所以一定要与时俱进。
//跳转到providerAdd.html页面 @RequestMapping("/goto_providerAdd") public String goto_providerAdd(){ return "providerAdd"; //Thymeleaf默认会帮我们拼串 }
(二)、然后,springboot与Thymeleaf整合的时候,有的地方会莫名其妙的爆红,这里需要注意一点,有的地方爆红对结果没影响,但是有的地方爆红就是错误了,就比如在service层的实现类里面注入spring容器就会爆红
这其实是没有问题的,就是Thymeleaf与springboot整合的扫描包的内部问题,对结果没有影响,我们不用管就行了。除了这里会爆红,还有一个地方会爆红
这里是写的基于get提交方式的一个超链接,需要拼接一下字符串,但是爆红也对结果没有影响。
(三)、还有一个更重要的一点,(我在这里栽了好多天,天天上度娘,天天上度娘,我都快气疯了)
由于以前学ssm的时候,controller层里面的数据都喜欢用session存到session域中,也是因为它的范围比较大,所以都用这个,但是转到springboot里面,有一大串爆红,我一开始还以为跟前面的那两情况一样了,不用管,可是运行之后却显示不出来数据,我真的服。
controller层:
html代码爆红:
访问浏览器结果:
真的好气人,查了好几天百度也没查出来结果,然后我就想起来我以前看过的网上的视频,视频上用的都是Model,然后我就想试试看行不行,一试竟然对了,醉,谁能想到是这里错了。
改过的controller层:
html页面立马不爆红了:
访问浏览器结果:
访问浏览器立马出现结果了,其实我也不知道为什么,我也没查出来为什么,还是等疫情结束回学校问老师吧。
(四)、最后还有一点,就是用了Thymeleaf之后,html页面URL地址的书写方式,没有传参的URL路径还是跟SpringMVC的书写方式差不多,但是加了参数之后就不一样了。
<a href="billView.html" th:href="@{/bill/findById.do(bid=${bill.bid})}">
因为用Thymeleaf标签,它这个加传入的参数必须这样来加,还用以前的SpringMVC格式肯定会爆红,而且访问浏览器还会出现一个Thymeleaf模板解析错误的提示。(如果你要是在学习过程中出现Thymeleaf模板解析错误的提示,无非就两种错误,前提是你的controller层的路径,没有书写错误
1、第一种就是你html中URL路径书写错误
2、另一种就是你引入Thymeleaf坐标的时候,书写错误
以上就是两种情况 )
这个是一个常见的RequestMapping("")注解的传参方式,如果你要是用以get请求方式的传参:GetMapping("") ,就需要写另外一种方式了,如下:
但是不推荐用get请求方式的提交,大家都懂!
好了,以上就是我在初学springboot过程中遇到的问题,然后在这分享一下,写的不好,勿喷,如果有跟我一样遇到这些情况的小伙伴们,希望能够帮到你们。