1 怎么引入thymeleaf?
1.1 html中引入
1.2 Maven依赖
org.springframework.boot
spring-boot-starter-thymeleaf
2 简单表达式
2.1 变量表达式:$ {…}
例:
2.2 选择变量表达式:* {…}
例:
Name: Sebastian.
2.3 消息表达式:#{…} 欢迎使用模版引擎!
例:
查找和模板文件位于同级目录,且具有和模板文件相同名字的.properties文件。模板/WEB-INF/templates/home.html在渲染时,会根据local设置,使用下面的消息源文件:
/WEB-INF/templates/home_zh_CN.properties for中文
/WEB-INF/templates/home_en.properties for英文
/WEB-INF/templates/home.properties 如果特定的lcoal不可用时使用
2.4 链接⽹址表达式:@ {…}
例:
2.5 ⽚段表达式:〜{…}
详见10
3 css和js等引入
4 基本表达式对象
当对上下⽂变量计算OGNL表达式时,某些对象可⽤于表达式以获得更⾼
的灵活性。 这些对象将被引⽤(按照OGNL标准),从#符号开始:
#ctx:上下⽂对象。
#vars:上下⽂变量。
#locale:上下⽂区域设置。
#request :(仅在Web Contexts中)HttpServletRequest对象。
#response:(仅在Web上下⽂中)HttpServletResponse对象。
#session :(仅在Web上下⽂中)HttpSession对象。
#servletContext :(仅在Web上下⽂中)ServletContext对象。
例:
中国
5 ⼯具表达式对象
除了这些基本的对象之外,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属性的⽅法(例如,作为迭代的结果)
例:
6 取值问题
6.1 对象取值
Name: Sebastian.
Surname: Pepper.
Nationality: Saturn.
6.2 遍历List
Onions
2.41
yes
6.3 遍历Map
我们称$ {prods}迭代表达式或被迭代变量。
我们称prod为迭代变量或简单的iter变量。
7 条件判断
7.1 if和unless的简单条件判断
查看
th:if属性不仅只以布尔值作为判断条件。 它的功能有点超出这⼀
点,它将按照这些规则判定指定的表达式值为true:
如果表达式的值不为null:
如果值为布尔值,则为true。
如果值是数字,并且不为零
如果值是⼀个字符且不为零
如果value是String,⽽不是“false”,“off”或“no”
如果值不是布尔值,数字,字符或字符串。
(如果表达式的值为null,th:if将判定此表达式为false)
此外,th:if还有⼀个反向属性,th:unless,我们可以在前⾯的例⼦中使
⽤,⽽不是在OGNL表达式中使⽤:
查看
7.2 switch语句
还有⼀种使⽤Java中等效的switch语句结构有条件地显示内容的⽅法:
th:switch / th:case。
User is an administrator
User is a manager
8 局部变量
第一个人的名字是
Julius Caesar.
第二个人的名字是
Julius Caesar.
9 内联表达式
Hello, [[${session.user.name}]]!
10 模版布局
10.1 ⽚段规范语法
⽚段表达式的语法是⾮常简单的。 有三种不同的格式:
“〜{templatename :: selector}” 包含在名称为templatename的模板上应⽤指定的标签选择器匹配的⽚段。 请注意,选择器可以只是⼀个⽚段名称,因此您可以像〜{footer :: copy}中的〜{templatename ::fragmentname}指定⼀些简单的东⻄。
标记选择器语法由底层的AttoParser解析库定义,类似于XPath表达式或CSS选择器。 有关详细信息,请参阅附录C.
“〜{templatename}” 包含名为templatename的整个模板。
请注意,您在th:insert/th:replace标签中使⽤的模板名称必须由Template Engine当前正在使⽤的Template Resolver可解析。
〜{:: selector}“或”〜{this :: selector}“ 包含在同⼀模板中的匹配指定选择器的⽚段
例:footer.html⽂件:
共创智慧药学新时代
在其他页面引用可以这么做
...