前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring boot 的thymeleaf真的是那么随便就可以用的吗?弄不好你就会遇到很头疼的事

spring boot 的thymeleaf真的是那么随便就可以用的吗?弄不好你就会遇到很头疼的事

作者头像
凯哥Java
发布2019-06-28 15:04:45
1.4K0
发布2019-06-28 15:04:45
举报
文章被收录于专栏:凯哥Java凯哥Java

spring boot 默认推荐使用的模板引擎是thymeleaf而非JSP。网上很多都是告诉你,怎么快速访问到thymeleaf,但是真的就那么简单吗?

你或许会遇到如下的问题:

fe059a900c7603e851d206be968d558c.png
fe059a900c7603e851d206be968d558c.png

前端给的静态HTML可以直接访问,为啥我直接放到项目中就会报错呢?访问不到呢?

错误如下:

13d6f60cb87bfe778bb37fc333f63d2d.png
13d6f60cb87bfe778bb37fc333f63d2d.png

我们断点跟踪: 发现在DispatcherServlet中有异常信息。信息实说,在aa.html中的第6行第三列出错了。

现在我们回到aa.html中查看第6行第3列:

f058223d84636126f1c7d4342a72193f.png
f058223d84636126f1c7d4342a72193f.png

我们发现,就只是head标签。这个html页面直接访问是不会报错的。为什么放到项目里面就会报错呢?

最后在一篇文章中,看到了如下:

dc1d6327a4bfb6c9cdb1a0cbc30055ab.png
dc1d6327a4bfb6c9cdb1a0cbc30055ab.png

你可能会发现在默认配置下,thymeleaf对.html的内容要求很严格,比如<meta charset="UTF-8" />,

如果少最后的标签封闭符号/,就会报错而转到错误页。也比如你在使用Vue.js这样的库,然后有<div v-cloak></div>这样的html代码,

也会被thymeleaf认为不符合要求而抛出错误。

果断将配置文件中

spring.thymeleaf.mode=HTML5替换掉

替换成如下:

spring.thymeleaf.mode = LEGACYHTML5

0f2755f84c518c739d1a309a0187d4a1.png
0f2755f84c518c739d1a309a0187d4a1.png

spring.thymeleaf.mode = LEGACYHTML5

spring.thymeleaf.mode的默认值是HTML5,其实是一个很严格的检查,改为LEGACYHTML5可以得到一个可能更友好亲切的格式要求。

需要注意的是,LEGACYHTML5需要搭配一个额外的库NekoHTML才可用。

<dependency>  

       <groupId>net.sourceforge.nekohtml</groupId>  

       <artifactId>nekohtml</artifactId>  

       <version>1.9.22</version>  

</dependency>  

最后重启项目就可以感受到不那么严格的thymeleaf了。

我们重启项目,重新访问:

ea4a4d0a889462124008bfefd79c96fe.png
ea4a4d0a889462124008bfefd79c96fe.png

以下是凯哥配置文件信息:

fa86463f86247693ce87c33dbe852601.png
fa86463f86247693ce87c33dbe852601.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档