当前位置 博文首页 > java_bird:spring boot thymeleaf的使用

    java_bird:spring boot thymeleaf的使用

    作者:[db:作者] 时间:2021-08-19 18:47

    thymeleaf用法详解

    1.????Thymeleaf简介à摘自官网

    Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎,能够处理HTMLXMLJavaScriptCSS甚至纯文本。

    Thymeleaf的主要目标是提供一个优雅和高度可维护的创建模板的方式。为了实现这一点,它建立在自然模板的概念上,将其逻辑注入到模板文件中,不会影响模板被用作设计原型。这改善了设计的沟通,弥合了设计和开发团队之间的差距。

    Thymeleaf也从一开始就设计了Web标准 -特别是HTML5?-允许您创建完全验证的模板

    2.????Thymeleaf支持的模版

    开箱即用的Thymeleaf可让您处理六种模板,每种模板称为模板模式:

    有两种标记模板模式(HTMLXML),三个文本模板模式(TEXTJAVASCRIPTCSS)和无操作模板模式(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?对于默认文本(如果语言环境不匹配)。

    而我们采用的是springbootspring采用的默认区域解析器AcceptHeaderLocaleResolver,根据requestheader中的accept-language值来解析locale,并且是不可变的。那么想要实现国际化,就要使用SessionLocaleResolver或者CookieLocaleResolver。正如类的名字所示,是按sessioncookie中储存的locale值来解析locale

    4.2???标准表达式语法介绍

    ·????????简单表达式

    o???可变表达式:?${...}

    o???选择变量表达式:?*{...}

    o???消息表达式:?#{...}

    o???链接网址表达式:?@{...}

    o???片段表达式:?~{...}

    ·????????字面

    o???文本文字:'one text''Another one!'...

    o???号码文字:0343.012.3...

    o???布尔文字:truefalse

    o???空字面:?null

    o???文字标记:onesometextmain...

    ·????????文字操作:

    o???字符串连接:?+

    o???文字替代:?|The nameis ${name}|

    ·????????算术运算:

    o???二元运算符:+-*/%

    o???减号(一元运算符):?-

    ·????????布尔运算:

    o???二元运算符:andor

    o???布尔否定(一元运算符):?!not

    ·????????比较和平等:

    o???比较:><>=<=gtltgele

    o???平等运营商:==!=eqne

    ·????????条件运算符:

    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
    下一篇:没有了