SpringBoot 之 thymeleaf
thymeleaf 的maven 配置我们都知道:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
但是, 它还是很多坑的。
先看一个boot 的默认配置:
# THYMELEAF (ThymeleafAutoConfiguration)
spring.thymeleaf.cache=true # Enable template caching.
spring.thymeleaf.check-template=true # Check that the template exists before rendering it.
spring.thymeleaf.check-template-location=true # Check that the templates location exists.
spring.thymeleaf.content-type=text/html # Content-Type value.
spring.thymeleaf.enabled=true # Enable MVC Thymeleaf view resolution.
spring.thymeleaf.encoding=UTF-8 # Template encoding.
spring.thymeleaf.excluded-view-names= # Comma-separated list of view names that should be excluded from resolution.
spring.thymeleaf.mode=HTML5 # Template mode to be applied to templates. See also StandardTemplateModeHandlers.
spring.thymeleaf.prefix=classpath:/templates/ # Prefix that gets prepended to view names when building a URL.
spring.thymeleaf.suffix=.html # Suffix that gets appended to view names when building a URL.
spring.thymeleaf.template-resolver-order= # Order of the template resolver in the chain.
spring.thymeleaf.view-names= # Comma-separated list of view names that can be resolved.
注意到 spring.thymeleaf.prefix=classpath:/templates/ , 而 suffix=.html 。这两个配置是相当关键的, 不然就被坑死了!。 它的意思一定不能搞错:
spring.thymeleaf.prefix=classpath:/templates/ 指明 thymeleaf 查找view 资源的根目录。 默认是 /templates/ 目录。 templates 的意思正确理解是模板 文件目录。
spring.thymeleaf.suffix=.html 指明 thymeleaf 查找view 资源时候使用的 后缀。 默认是 html 文件。
上面两个配置, 我们一般不需要做什么修改。 有意思的是下面的 配置:
spring.thymeleaf.excluded-view-names 要排除的 view Name,也就是 试图名称。他可以是一个包含星号(*)的路径名,(不是正则表达式)。
spring.thymeleaf.view-names= 可以被解析的 view Names, 也可以是一个包含星号的路径名。只有@RequestMapping返回的view 的name 落在了这个 Comma-separated list , 那么boot 才会使用ThymeleafViewResolver 进行解析。
ThymeleafViewResolver 关键代码是:
protected boolean canHandle(String viewName, Locale locale) {
String[] viewNamesToBeProcessed = this.getViewNames();
String[] viewNamesNotToBeProcessed = this.getExcludedViewNames();
return (viewNamesToBeProcessed == null || PatternMatchUtils.simpleMatch(viewNamesToBeProcessed, viewName)) && (viewNamesNotToBeProcessed == null || !PatternMatchUtils.simpleMatch(viewNamesNotToBeProcessed, viewName));
}
ThymeleafViewResolver 的处理view 的优先级是第一位,也就是如果它能够处理,那么就交给他处理。 否则交给其他 ViewResolver处理。
我们可以通过 spring.thymeleaf.template-resolver-order 进行配置。
注意, 如果ThymeleafViewResolver 能够处理, 但是,资源却找不到,那么会看到一个后台错误,如:
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/v222/index", template might not exist or might not be accessible by any of the configured Template Resolvers
at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:246) ~[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104) ~[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060) ~[thymeleaf-2.1.5.RELEASE.jar:2.1.5.RELEASE]
如果ThymeleafViewResolver 不能处理,当然, 是看不到这个错误的。 也就是说, 我们可以同时使用 ThymeleafViewResolver , 和 JspxxViewResolver, 即同时使用 thymeleaf 模板和 jsp 页面试图技术。 但是他们有个先后顺序。
关于thymeleaf 的语法, 这里不在赘述,请参见:
http://www.cnblogs.com/nuoyiamy/p/5591559.html
SpringBoot 之 thymeleaf的更多相关文章
- Springboot+JPA+Thymeleaf 校园博客完整小网站
本文所属[知识林]:http://www.zslin.com/web/article/detail/35 此项目是一个比较简易的校园博客.麻雀虽小五脏俱全,虽然是比较简易的但是涉及的知识点还是比较全面 ...
- 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础授权权限
上一篇<[原]无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限>介绍了实现Shiro的基础认证.本篇谈谈实现 ...
- 【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限
开发环境搭建参见<[原]无脑操作:IDEA + maven + SpringBoot + JPA + Thymeleaf实现CRUD及分页> 需求: ① 除了登录页面,在地址栏直接访问其他 ...
- 【Springboot】Springboot整合Thymeleaf模板引擎
Thymeleaf Thymeleaf是跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它主要有以下几个特点: 1. Thymeleaf在有网络和无 ...
- 从.Net到Java学习第九篇——SpringBoot下Thymeleaf
从.Net到Java学习系列目录 Thymeleaf概述 Thymeleaf 是一个流行的模板引擎,该模板引擎采用java语言开发.模板引擎是一个技术名称,是跨领域平台的概念,在java语言体系下有模 ...
- 从.Net到Java学习第六篇——SpringBoot+mongodb&Thymeleaf&模型验证
SpringBoot系列目录 SpringBoot整合mongodb MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.如果你没用过Mong ...
- SpringBoot 之Thymeleaf模板.
一.前言 Thymeleaf 的出现是为了取代 JSP,虽然 JSP 存在了很长时间,并在 Java Web 开发中无处不在,但是它也存在一些缺陷: 1.JSP 最明显的问题在于它看起来像HTML或X ...
- IDEA上创建 Maven SpringBoot+mybatisplus+thymeleaf 项目
概述 在WEB领域,Java也是在不断的探索和改进,从开始的JSP--->Struts1--->Struts2+Spring--->Spring MVC--->SpringBo ...
- springboot整合thymeleaf+tiles示例
网上关于此框架的配置实在不多,因此想记录下来以防忘记 因为公司框架基于上述(公司采用gradle构建项目,楼主采用的是maven),所以楼主能少走些弯路: 1.创建springboot-maven项目 ...
- springboot整合Thymeleaf模板引擎
引入依赖 需要引入Spring Boot的Thymeleaf启动器依赖. <dependency> <groupId>org.springframework.boot</ ...
随机推荐
- [ZJOI2007]最大半联通子图
这个题,翻译一下题面,就是一个连通图,找他的最长链的数量... 所以说方法就比较明显了:tarjan缩点+拓扑+DP 注意也是本题唯一坑点,拓扑DP的时候要考虑重复边的情况... 呆码: #inclu ...
- LSTM学习—Long Short Term Memory networks
原文链接:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ Understanding LSTM Networks Recurren ...
- springboot区分开发、测试、生产多环境的应用配置(二)
转:https://www.jb51.net/article/139119.htm springboot区分开发.测试.生产多环境的应用配置(二) 这篇文章主要给大家介绍了关于maven profil ...
- javax/servlet/jsp/jstl/core/Config
javax/servlet/jsp/jstl/core/Config springmvc出现的问题. 尝试了各种jar,问题依旧. DispatcherServlet配置如下. <bean id ...
- Github Page 搜索工具
轮子 今天造了一个轮子 -- Github Page搜索工具 https://man-ing.com/github. 什么是Github Page 直接从GitHub存储库托管.只需编辑,推送,更改即 ...
- CCF-模板生成系统-201509-3
主要是string---STL的运用 趁机整理一下erase, find, substr, replace, insert #include <bits/stdc++.h> using n ...
- macbook 显示所有文件夹
在macbook终端执行如下代码: 1. 设置打开所有的文件 defaults write com.apple.finder AppleShowAllFiles -bool true 2. 关闭之前打 ...
- Self-Introduce
My name is Leo.I like listening music, especially English song.What's more, I enjoy playing games, l ...
- requireJs,AMD,CMD
知识点1:AMD/CMD/CommonJs是JS模块化开发的标准,目前对应的实现是RequireJs/SeaJs/nodeJs. 知识点2:CommonJs主要针对服务端,AMD/CMD主要针对浏 ...
- svn安装时遇到问题总结
问题1: 一番折腾终于解决了,现将解决方法总结一下: 1.点击Window键+R键,如下图: 2.输入services.msc命令,然后点击“确定”,得到下图: 3.找到并选中“Windows Man ...