4.1什么是thymleaf
简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。它有如下三个极吸引人的特点: Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
4.2如何使用
1)pom.xml中添加thymeleaf依赖,去掉jasper依赖
2)controller方法实现跳转到index的逻辑视图里
3)访问时,发现404的错误,即使webapp下有index.jsp,并且springMVC配置的是正确的视图解析器。这是因为,在pom.xml中配置了thymeleaf模块后,视图默认是templates目录下的html。因此,我们在templates目录下创建一个index.html,发现访问正常。(记得取消filter和interceptor的功能)
4.3如何传值
1)用el表达式是无法传值的,更不能用jstl
2)在html的标签上添加th命名空间
<html lang="en" xmlns:th="http://www.thymeleaf.org">
3)demo html
4) 大多数Thymeleaf属性允许将它们的值设置为或包含表达式,这些表达式有五种类型
4.3变量表达式
变量表达式就是el表达式,就是上下文变量,从page,request,session,application域中获取变量值。
用th:text来输出内容:
(1)变量
<h3>欢迎页面!欢迎:<span th:text="${key}">默认用户名</span></h3>
a. th:text 用来将内容输出到所在的标签<span>中,替换静态内容“默认用户名”
(3)对象
${}可以分别从request,session,applicatin中获取变量值
3)可以直接传递一个对象
例子:
4.4选择表达式*{…}
选择表达式就像变量表达式一样,只不过对象不是上下文变量,而是先前由th:object指定的对象。
<div th:object="${user}">
...
<span th:text="*{username}">...</span>
...
</div>
例子:
4.5消息表达式#{…}
消息表达式可以默认读取resources目录下的messages.properties文件中的内容,通过键来引用这引用这些消息。
(1)在resources目录下创建一个messages.properties,内容如下:
(2)在index.html页面通过消息表达式,可以直接获取.properties文件中的内容
(3)消息表达式可以带参数
可以通过spring.messages.basename: messages来更改默认读取的配置文件