特性
Thymeleaf是spring4.0中推荐的模板引擎技术,一种和 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较与其他的模板引擎,它有如下三个极吸引人的特点:
1.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
2.Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
3.Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
引入
引用命名空间
在html中引入此命名空间,可避免编辑器出现html验证错误,虽然加不加命名空间对Thymeleaf的功能没有任何影响
表达式语法
变量表达式
变量表达式即Spring EL表达式
${session.user.name}
它以html的标签属性来表示
选择星号表达式
和变量表达式类似,不过需要一个预先选择的对象作为容器来执行
*{user.name}
被指定的object由th:object来定义
文字国际化表达式
文字国际化表达式可以从外部的properties文件中,通过key索引到value
在 springmvc 中使用消息要额外配置 ResourceBundleMessageSource 这个 bean:
// 用于外部文本及国际化消息
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}
这个 bean 会去 classpath 根目录下去寻找 messages 为基名的 properties 文件. 比如,
messages.properties, messages_en_US.properties, messages_zh_CN.properties.
th:text外部文本会替换 p 标签内的内容.
...
...
...
...
URL表达式
将上下文的信息添加到URL,也称为重写URL
#url赋值
#设置参数,并再次渲染URL
#设置相对路径
变量表达式和星号表达式的区别
如果不考虑上下文的情况下,两者没有区别;星号语法评估在选定对象上表达,而不是整个上下文。
什么是选定对象,就是父标签的值。
Name: Sebastian.
Surname: Pepper.
Nationality: Saturn.
上面的等价于:
Name: Sebastian.
Surname: Pepper.
Nationality: Saturn.
当然,星号语法和美元语法可以混用
Name: Sebastian.
Surname: Pepper.
Nationality: Saturn.
表达式支持的语法
字面(Literals)
文本操作(Text operations)
算术运算(Arithmetic operations)
布尔操作(Boolean operations)
比较和等价(Comparisons and equality)
条件运算符(Conditional operators)
所有这些特征可以被组合并嵌套:
'User is of type ' + (${user.isAdmin()} ? 'Administrator' : (${user.type} ?: 'Unknown'))
常用的th标签
1、赋值、字符串拼接
description
字符串拼接还有另外一种简洁的写法:
设置 Attribute 值
5.1 设置任何Attribute 的方法
--设置单个
--一次设置多个
5.2 设置一些内置的Attribute的方法