没有合适的资源?快使用搜索试试~ 我知道了~
首页Thymeleaf 3.0.11官方中文文档:优雅的Java模板引擎介绍
Thymeleaf 3.0.11官方文档中文版是一份详细介绍Thymeleaf模板引擎的官方指南,适用于Java开发者在Web和独立环境中构建高效、优雅且易于维护的模板。Thymeleaf作为一个现代模板引擎,支持多种模板模式,包括HTML、XML、文本(如JavaScript和CSS)、以及纯文本模式。 1.1 Thymeleaf的核心概念 Thymeleaf的设计目标在于提供一个自然模板的框架,将逻辑与HTML/模板分离,这样可以简化模板编写,减少设计与开发之间的沟通障碍。它支持HTML5标准,允许创建可验证的模板,提升网页质量。 1.2 模板模式的多样性 - HTML模板模式:支持HTML5、HTML4和XHTML,不执行验证或格式检查,保持代码原始结构。 - XML模板模式:专用于XML输入,要求格式正确,但不进行DTD或XML架构的验证,解析时对格式错误敏感。 - 文本模板模式:包括TEXT(如电子邮件模板或纯文本文档)和JAVASCRIPT,前者允许非标记模板使用特殊语法,后者在JavaScript文件中处理模型数据,有JavaScript特有的整合特性。 - 无操作模板模式(RAW):不进行任何处理,直接输出原样。 通过这些模板模式,Thymeleaf提供了丰富的灵活性,让开发者根据项目需求选择合适的模板类型。3.0.11版本的官方文档提供了详细的配置、使用方法和示例,有助于新用户快速上手,同时对于有经验的开发者来说,是深入理解Thymeleaf工作原理和优化模板的宝贵资源。在实际应用中,开发者需要结合文档中的指导,遵循最佳实践,以确保模板的高效性和安全性。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/10929015/bgf.jpg)
4.1
消
息
我
们
已
经
知
道
,
#{...}
消
息
表
达
式
允
许
我
们
链
接
:
<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>
......
对
此
:
home.welcome=¡Bienvenido a nuestra tienda de comestibles!
但
是
有
⼀个
⽅
⾯
我
们
还
没
有
想
到
:
如
果
消
息
⽂
本
不
是
完
全
静
态
会
发
⽣
什
么
?
例
如
,
如
果
我
们
的
应
⽤
程
序
知
道
谁
是
随
时
访
问
该
⽹
站
的
⽤
⼾
并
且
我
们
想
通
过
名
字
问
候
他们
怎
么
办
?
<p>¡Bienvenido a nuestra tienda de comestibles, John Apricot!</p>
这
意
味
着
我
们
需
要
在
消
息
中
添
加
⼀个
参
数
。
像
这
样
:
home.welcome=¡Bienvenido a nuestra tienda de comestibles, {0}!
参
数
是
根
据
java.text.MessageFormat
标
准
语
法
指
定
的
,
这
意
味
着
您
可
以
格
式
化
为
java.text.*
包
中
的
类
的
API
⽂
档
中
指
定
的
数
字
和
⽇
期
。
为
了
为
我
们
的
参
数
指
定
⼀个
值
,
并
给
定
⼀个
调
⽤
的
HTTP
会
话
属
性
user
,
我
们
可
以
:
<p th:utext="#{home.welcome(${session.user.name})}">
Welcome to our grocery store, Sebastian Pepper!
</p>
请
注
意
,
使
⽤
th:utext
此
处
意
味
着
格
式
化
的
消
息
不
会
被
转
义
。
此
⽰
例
假
定
user.name
已
经
转
义
。
可
以
指
定
⼏
个
参
数
,
以
逗
号
分
隔
。
消
息
密
钥
本
⾝
可
以
来
⾃
变
量
:
<p th:utext="#{${welcomeMsgKey}(${session.user.name})}">
Welcome to our grocery store, Sebastian Pepper!
</p>
4.2
变
量
我
们
已
经
提
到
${...}
表
达
式
实
际
上
是
在
上下
⽂
中
包
含
的
变
量
映
射
上
执
⾏
的
OGNL
(
对
象
-
图
形
导
航
语
⾔
)
表
达
式
。
有
关
OGNL
语
法
和
功
能
的
详
细
信
息
,
请
阅
读
OGNL
语
⾔
指
南
在
Spring
⽀
持
MVC
的
应
⽤
程
序
中
,
OGNL
将
被
SpringEL
取
代
,
但
其
语
法
与
OGNL
的
语
法
⾮
常
相
似
(
实
际
上
,
对
于
⼤
多
数
常
⻅
情
况
来
说
,
完
全
相
同
)
。
从
OGNL
的
语
法
,
我
们
知
道
表
达
式
:
![](https://csdnimg.cn/release/download_crawler_static/10929015/bg10.jpg)
<p>Today is: <span th:text="${today}">13 february 2011</span>.</p>
......
实
际
上
相
当
于
这
个
:
ctx.getVariable("today");
但
是
OGNL
允
许
我
们
创
建
更
强
⼤
的
表
达
式
,
这
就
是
:
<p th:utext="#{home.welcome(${session.user.name})}">
Welcome to our grocery store, Sebastian Pepper!
</p>
...
通
过
执
⾏
以
下
命
令
获
取
⽤
⼾
名
:
((User) ctx.getVariable("session").get("user")).getName();
但
是
getter
⽅
法
导
航
只
是
OGNL
的
⼀个
特
性
。
让
我
们
看看
更
多
:
/*
* Access to properties using the point (.). Equivalent to calling property getters.
*/
${person.father.name}
/*
* Access to properties can also be made by using brackets ([]) and writing
* the name of the property as a variable or between single quotes.
*/
${person['father']['name']}
/*
* If the object is a map, both dot and bracket syntax will be equivalent to
* executing a call on its get(...) method.
*/
${countriesByCode.ES}
${personsByName['Stephen Zucchini'].age}
/*
* Indexed access to arrays or collections is also performed with brackets,
* writing the index without quotes.
*/
${personsArray[0].name}
/*
* Methods can be called, even with arguments.
*/
${person.createCompleteName()}
${person.createCompleteNameWithSeparator('-')}
表
达
式
基
本
对
象
在
上下
⽂
变
量
中
评
估
OGNL
表
达
式
时
,
某
些
对
象
可
⽤
于
表
达
式
以
获
得
更
⾼
的
灵
活
性
。
将
以
#
符
号
开
头
引
⽤
这
些
对
象
(
按
照
OGNL
标
准
)
:
#ctx
:
上下
⽂
对
象
。
#vars:
上下
⽂
变
量
。
#locale
:
上下
⽂
区
域
设
置
。
#request :(
仅
限
Web Contexts
)
HttpServletRequest
对
象
。
#response :(
仅
限
Web Contexts
)
HttpServletResponse
对
象
。
#session :(
仅
限
Web Contexts
)
HttpSession
对
象
。
![](https://csdnimg.cn/release/download_crawler_static/10929015/bg11.jpg)
#servletContext :(
仅
限
Web Contexts
)
ServletContext
对
象
。
所
以
我
们
可
以
这
样
做
:
Established locale country: <span th:text="${#locale.country}">US</span>.
您
可
以
在
附
录
A
中
阅
读
这
些
对
象
的
完
整
参
考
。
Expression Utility
对
象
除
了
这
些
基
本
对
象
,
Thymeleaf
还
将
为
我
们
提
供
⼀
组
实
⽤
程
序
对
象
,
帮
助
我
们
在
表
达
式
中
执
⾏
常
⻅
任
务
。
#execInfo
:
有
关
正
在
处
理
的
模
板
的
信
息
。
#messages
:
在
变
量
表
达
式
中
获
取
外
部
化
消
息
的
⽅
法
,
与
使
⽤
#
{...}
语
法
获
取
的
⽅
法
相
同
。
#uris
:
转
义
部
分
URL / URI
的
⽅
法
#conversions
:
⽤
于
执
⾏
已
配
置
的
转
换
服
务
的
⽅
法
(
如
果
有
)
。
#dates
:
java.util.Date
对
象
的
⽅
法
:
格
式
化
,
组
件
提
取
等
。
#calendars
:
类
似
于
#dates
,
但
java.util.Calendar
对
象
。
#numbers
:
格
式
化
数
字
对
象
的
⽅
法
。
#strings
:
String
对
象
的
⽅
法
:
contains
,
startsWith
,
prepending / appending
等
。
#objects
:
⼀
般
的
对
象
⽅
法
。
#bools
:
布
尔
评
估
的
⽅
法
。
#arrays
:
数
组
的
⽅
法
。
#lists
:
列
表
的
⽅
法
。
#sets
:
集
合
的
⽅
法
。
#maps
:
地图
的
⽅
法
。
#aggregates
:
在
数
组
或
集
合
上
创
建
聚
合
的
⽅
法
。
#ids
:
处
理
可
能
重
复
的
id
属
性
的
⽅
法
(
例
如
,
作
为
迭
代
的
结
果
)
。
您
可
以
在
附
录
B
中
查
看
每
个
实
⽤
程
序
对
象
提
供
的
功
能
。
在
我
们
的
主
⻚
中
重
新
格
式
化
⽇
期
现
在
我
们
知
道
这
些
实
⽤
程
序
对
象
,
我
们
可
以
使
⽤
它
们
来
改
变
我
们
在
主
⻚
中
显
⽰
⽇
期
的
⽅
式
。
⽽
不
是
在
我
们
这
样
做
HomeController
:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy");
Calendar cal = Calendar.getInstance();
WebContext ctx = new WebContext(request, servletContext, request.getLocale());
ctx.setVariable("today", dateFormat.format(cal.getTime()));
templateEngine.process("home", ctx, response.getWriter());
......
我
们
可
以
做
到
这
⼀
点
:
WebContext ctx =
new WebContext(request, response, servletContext, request.getLocale());
ctx.setVariable("today", Calendar.getInstance());
templateEngine.process("home", ctx, response.getWriter());
...
然
后
在
视
图
层
本
⾝
中
执
⾏
⽇
期
格
式
设
置
:
<p>
Today is: <span th:text="${#calendars.format(today,'dd MMMM yyyy')}">13 May 2011</span>
</p>
![](https://csdnimg.cn/release/download_crawler_static/10929015/bg12.jpg)
4.3
选
择
表
达
式
(
星
号
语
法
)
变
量
表
达
式
不
仅
可
以
写
成
${...}
,
也
可
以
作
为
*{...}
。
但
是
有
⼀个
重
要
的
区
别
:
星
号
语
法
评
估
所
选
对
象
上
的
表
达
式
⽽
不
是
整
个上下
⽂
。
也
就
是
说
,
只
要
没
有
选
定
的
对
象
,
美
元
和
星
号
语
法
就
会
完
全
相
同
。
什
么
是
选
定
的
对
象
?
使
⽤
th:object
属
性
的
表
达
式
的
结
果
。
我
们
在
⽤
⼾
个
⼈
资
料
(
userprofile.html
)
⻚
⾯
中
使
⽤
⼀个
:
<div th:object="${session.user}">
<p>Name: <span th:text="*{firstName}">Sebastian</span>.</p>
<p>Surname: <span th:text="*{lastName}">Pepper</span>.</p>
<p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p>
</div>
这
完
全
等
同
于
:
<div>
<p>Name: <span th:text="${session.user.firstName}">Sebastian</span>.</p>
<p>Surname: <span th:text="${session.user.lastName}">Pepper</span>.</p>
<p>Nationality: <span th:text="${session.user.nationality}">Saturn</span>.</p>
</div>
当
然
,
美
元
和
星
号
语
法
可
以
混
合
使
⽤
:
<div th:object="${session.user}">
<p>Name: <span th:text="*{firstName}">Sebastian</span>.</p>
<p>Surname: <span th:text="${session.user.lastName}">Pepper</span>.</p>
<p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p>
</div>
当
对
象
选
择
到
位
时
,
所
选
对
象
也
可
⽤
作
美
元
表
达
式
作
为
#object
表
达
式
变
量
:
<div th:object="${session.user}">
<p>Name: <span th:text="${#object.firstName}">Sebastian</span>.</p>
<p>Surname: <span th:text="${session.user.lastName}">Pepper</span>.</p>
<p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p>
</div>
如
上
所
述
,
如
果
没
有
执
⾏
任何
对
象
选
择
,
则
美
元
和
星
号
语
法
是
等
效
的
。
<div>
<p>Name: <span th:text="*{session.user.name}">Sebastian</span>.</p>
<p>Surname: <span th:text="*{session.user.surname}">Pepper</span>.</p>
<p>Nationality: <span th:text="*{session.user.nationality}">Saturn</span>.</p>
</div>
4.4
链
接
URL
由
于
它
们
的
重
要
性
,
URL
是
Web
应
⽤
程
序
模
板
中
的
⼀
等
公
⺠
,
⽽
Thymeleaf
标
准
⽅
⾔
具
有
特
殊
的
语
法
,
@
语
法
:
@{...}
有
不
同
类
型
的
⽹
址
:
绝
对
⽹
址
:
http://www.thymeleaf.org
相
对
URL
,
可
以
是
:
![](https://csdnimg.cn/release/download_crawler_static/10929015/bg13.jpg)
⻚
⾯
相
对
:
user/login.html
上下
⽂
相
关
:( /itemdetails?id=3
服
务
器
中
的
上下
⽂
名
称
将
⾃
动
添
加
)
服
务
器
相
对
:( ~/billing/processInvoice
允
许
在
同
⼀
服
务
器
中
的
另
⼀个上下
⽂
(
=
应
⽤
程
序
)
中
调
⽤
URL
)
。
协
议
相
对
URL
:
//code.jquery.com/jquery-2.0.3.min.js
这
些
表
达
式
的
实
际
处
理
及
其
转
换
为
将
要
输
出
的
URL
是
通
过
org.thymeleaf.linkbuilder.ILinkBuilder
注
册
到
ITemplateEngine
正
在
使
⽤
的
对
象
的
接
⼝
的
实
现
来
完
成
的
。
默
认
情
况
下
,
此
接
⼝
的
单
个
实
现
是
在
类
中
注
册
的
org.thymeleaf.linkbuilder.StandardLinkBuilder
,
这
对
于
脱
机
(
⾮
Web
)
以
及
基
于
Servlet API
的
Web
⽅
案
都
是
⾜
够
的
。
其
他
⽅
案
(
例
如
与
⾮
ServletAPI Web
框
架
的
集
成
)
可
能
需
要
链
接
构
建
器
接
⼝
的
特
定实
现
。
让
我
们
使
⽤
这
种
新
语
法
。
符
合
th:href
属
性
:
<!-- Will produce 'http://localhost:8080/gtvg/order/details?orderId=3' (plus rewriting) -->
<a href="details.html"
th:href="@{http://localhost:8080/gtvg/order/details(orderId=${o.id})}">view</a>
<!-- Will produce '/gtvg/order/details?orderId=3' (plus rewriting) -->
<a href="details.html" th:href="@{/order/details(orderId=${o.id})}">view</a>
<!-- Will produce '/gtvg/order/3/details' (plus rewriting) -->
<a href="details.html" th:href="@{/order/{orderId}/details(orderId=${o.id})}">view</a>
有
些事
情
需
要
注
意
:
th:href
是
⼀个
修
饰
符
属
性
:
⼀
旦
处
理
,
它
将
计
算
要
使
⽤
的
链
接
URL
并
将
该
值
设
置
href
为
<a>
标
记
的
属
性
。
我
们
可
以
使
⽤
表
达
式
来
指
定
URL
参
数
(
如
您
所
⻅
orderId=${o.id}
)
。
还
将
⾃
动
执
⾏
所
需
的
URL
参
数
编
码
操
作
。
如
果
需
要
⼏
个
参
数
,
这
些
参
数
将
⽤
逗
号
分
隔
:
@{/order/process(execId=${execId},execType='FAST')}
URL
路
径
中
也
允
许
使
⽤
变
量
模
板
:
@{/order/{orderId}/details(orderId=${orderId})}
以
/
(
例
如
:)
开
头
的相
对
URL /order/details
将
⾃
动
以
应
⽤
程
序
上下
⽂
名
称
为
前
缀
。
如
果
未
启
⽤
cookie
或
尚
未
知
道
cookie
,
则
";jsessionid=..."
可
能
会
在
相
对
URL
中
添
加
后
缀
,
以
便保
留
会
话
。
这
称
为
URL
重
写
,
Thymeleaf
允
许
您
通
过
response.encodeURL(...) Servlet API
为
每
个
URL
插
⼊
⾃
⼰
的
重
写
过
滤
器
。
该
th:href
属
性
允
许
我
们
(
可
选
)
href
在
我
们
的
模
板
中
具
有
⼯
作
静
态
属
性
,
以
便
我
们
的
模
板
链
接
在
直
接
打
开
以
进
⾏
原
型
设计
时
仍
可
由
浏
览
器
导
航
。
与
消
息
语
法
(
#{...}
)
的
情
况
⼀
样
,
URL
基
数
也
可
以
是
评
估
另
⼀个
表
达
式
的
结
果
:
<a th:href="@{${url}(orderId=${o.id})}">view</a>
<a th:href="@{'/details/'+${user.login}(orderId=${o.id})}">view</a>
我
们
主
⻚
的
菜
单
既
然
我
们
知
道
如
何
创
建
链
接
URL
,
那
么
在
我
们
的
主
⻚
中为
⽹
站
中
的
其
他
⼀
些
⻚
⾯
添
加
⼀个
⼩
菜
单
呢
?
<p>Please select an option</p>
<ol>
<li><a href="product/list.html" th:href="@{/product/list}">Product List</a></li>
<li><a href="order/list.html" th:href="@{/order/list}">Order List</a></li>
<li><a href="subscribe.html" th:href="@{/subscribe}">Subscribe to our Newsletter</a></li>
<li><a href="userprofile.html" th:href="@{/userprofile}">See User Profile</a></li>
</ol>
服
务
器
根
⽬
录
相
对
URL
可
以
使
⽤
其
他
语
法
来
创
建
服
务
器
根
相
对
(
⽽
不
是
上下
⽂
根
相
对
)
URL
,
以
便
链
接
到
同
⼀
服
务
器
中
的
不
同
上下
⽂
。
这
些
URL
将
被
指
定
为
@{~/path/to/something}
剩余91页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/d956d67789654a938394e24f766ead22_weixin_40080972.jpg!1)
cjx913
- 粉丝: 26
- 资源: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 中国微型数字传声器:技术革新与市场前景
- 智能安防:基于Hi3515的嵌入式云台控制系统设计
- 手机电量低时辐射真增千倍?解析手机使用谣言
- 56F803型DSP驱动的高精度大功率超声波电源控制策略研究
- ARM与GPRS结合的远程监测系统设计
- GPS与RFID技术结合的智能巡检系统设计
- CPLD驱动的低功耗爆炸场温度测试系统设计
- 基于FPGA的智能驱动控制系统:可扩展设计与工业网络协议
- 基于ATmega128和CH374的嵌入式USB接口设计
- 基于AT89C52的温度补偿超声波测距仪:高精度设计与应用
- MSP430F448单片机在交流数字电压表中的应用
- 提升变频器应用效率的12项实用技巧
- STM32F103在数字电镀电源并联均流系统中的应用
- PSpice仿真下的升压开关电源设计:拓扑分析与CCM稳定性提升
- 轻巧高效:MSP430主导的低成本无线传感器网络节点设计
- FPGA在EDA/PLD中实现LVDS接口的应用解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)