当前位置 博文首页 > java_bird:spring boot thymeleaf的使用
thymeleaf用法详解
1.????Thymeleaf简介à摘自官网
Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎,能够处理HTML,XML,JavaScript,CSS甚至纯文本。
Thymeleaf的主要目标是提供一个优雅和高度可维护的创建模板的方式。为了实现这一点,它建立在自然模板的概念上,将其逻辑注入到模板文件中,不会影响模板被用作设计原型。这改善了设计的沟通,弥合了设计和开发团队之间的差距。
Thymeleaf也从一开始就设计了Web标准 -特别是HTML5?-允许您创建完全验证的模板
2.????Thymeleaf支持的模版
开箱即用的Thymeleaf可让您处理六种模板,每种模板称为模板模式:
有两种标记模板模式(HTML和XML),三个文本模板模式(TEXT,JAVASCRIPT和CSS)和无操作模板模式(RAW)
·????????HTML
·????????XML
·????????TEXT
·????????JAVASCRIPT
·????????CSS
·????????RAW
3.????Thymeleaf优点
浏览器不仅可以正确显示这些信息,而且还可以(可选地)在浏览器中静态打开原型时显示的值(可选地)指定一个值属性(在这种情况下为“JamesCarrot”),将由${user.name}模板处理过程中的评估结果代替。
这有助于您的设计师和开发人员处理相同的模板文件,并减少将静态原型转换为工作模板文件所需的工作量。这样做的功能是称为自然模板的功能
4.????Thymeleaf使用详解
4.1 读取外部属性文件中的文本,官网称之为:外部化文本
Thymeleaf中的外部化文本的位置是完全可配置的,它将取决于org.thymeleaf.messageresolver.IMessageResolver所使用的具体实现。通常,.properties将使用基于文件的实现,但是如果我们想要从数据库获取消息,我们可以创建自己的实现,标准消息解析器org.thymeleaf.messageresolver.StandardMessageResolver
标准消息解析器希望classpath:/templates/home.html在同一文件夹中的属性文件中找到与模板相同名称的消息,如:
classpath:/templates/home_en.properties?英文文本。
classpath:/templates/home_es.properties?用于西班牙语文本。
classpath:/templates/home_pt_BR.properties?用于葡萄牙语(巴西)语言文本。
classpath:/templates/home.properties?对于默认文本(如果语言环境不匹配)。
而我们采用的是springboot,spring采用的默认区域解析器是AcceptHeaderLocaleResolver,根据requestheader中的accept-language值来解析locale,并且是不可变的。那么想要实现国际化,就要使用SessionLocaleResolver或者CookieLocaleResolver。正如类的名字所示,是按session或cookie中储存的locale值来解析locale。
4.2???标准表达式语法介绍
·????????简单表达式:
o???可变表达式:?${...}
o???选择变量表达式:?*{...}
o???消息表达式:?#{...}
o???链接网址表达式:?@{...}
o???片段表达式:?~{...}
·????????字面
o???文本文字:'one text','Another one!',...
o???号码文字:0,34,3.0,12.3,...
o???布尔文字:true,false
o???空字面:?null
o???文字标记:one,sometext,main,...
·????????文字操作:
o???字符串连接:?+
o???文字替代:?|The nameis ${name}|
·????????算术运算:
o???二元运算符:+,-,*,/,%
o???减号(一元运算符):?-
·????????布尔运算:
o???二元运算符:and,or
o???布尔否定(一元运算符):?!,not
·????????比较和平等:
o???比较:>,<,>=,<=(gt,lt,ge,le)
o???平等运营商:==,!=(eq,ne)
·????????条件运算符:
o???IF-THEN:?(if) ?(then)
o???IF-THEN-ELSE:?(if) ?(then) : (else)
o???默认:?(value) ?:(defaultvalue)
·????????特殊令牌:
o???无操作:?_
所有这些功能可以组合和嵌套:
'User is of type' + (${user.isAdmin()} ? 'Administrator' : (${user.type} ?: 'Unknown'))
?
4.3???表达式基本对象
·????????#ctx:上下文对象。
·????????#vars:?上下文变量。
·????????#locale:上下文区域设置。
·????????#request:(仅在Web上下文中)HttpServletRequest对象。
·????????#response:(仅在Web上下文中)HttpServletResponse对象。
·????????#session:(仅在Web上下文中)HttpSession对象。
·????????#servletContext:(仅在Web上下文中)ServletContext对象。
使用方式如下:
/*
* ======================================================================
* See javadoc API for class org.thymeleaf.context.IContext
* ======================================================================
*/
${#ctx.locale}
${#ctx.variableNames}
/*
* ======================================================================
* See javadoc API for class org.thymeleaf.context.IWebContext
* ======================================================================
*/
${#ctx.request}
${#ctx.response}
${#ctx.session}
${#ctx.servletContext}
cs