Spring Boot 之 Thymeleaf 篇

  • 内容
  • 评论
  • 相关

在Spring boot中,官方默认采用的是Thymeleaf模块引擎,通过org.springframework.boot.autoconfigure.thymeleaf包对Thymeleaf进行了自动配置。

通过Thymeleaf2Configuration类对集成所需要的Bean进行自动配置,包括templateResolver、templateViewResolver 和templateEngine 的配置。

通过ThymeleafProperties来配置Thymeleaf,在application.properties中以 spring.thymeleaf开头来配置,通过查看ThymeleafProperties的主要源码,可以看出如何设置属性及默认配置:

以上关于ThymeleafProperties类的中文注释,为个人根据代码理解及其原代码英文注释而来。

在spring boot中整合Thymeleaf需要加入对Thymeleaf的依赖:

创建一个HelloController 类,通过spring mvc 返回页面,来通过Thymeleaf渲染一个页面。

直接打开html页面展现Hello World,但是启动程序后,访问http://localhost:8080/hello,则是展示Controller中host的值:http://www.baikeyang.com,做到了不破坏HTML自身内容的数据逻辑分离。

启动项目,直接访问,会有一个异常抛出:

spring.thymeleaf.mode的默认值是HTML5,其实是一个很严格的检查,对.html的内容要求很严格,比如<meta charset="UTF-8" />,如果少最后的标签封闭符号/,就会报错而转到错误页。也比如你在使用<br/>、<link>、<meta>这样的html标签,也会被thymeleaf认为不符合要求而抛出错误。

因为,我可以调整spring.thymeleaf.mode,改为LEGACYHTML5可以得到一个可能更友好亲切的格式要求。

需要注意的是,LEGACYHTML5需要搭配一个额外的库NekoHTML才可用。需要给项目添加NekoHTML的依赖:

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

 

 

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注