一.简介
  1.thymeleaf优点
    ①是一个支持html原型的自然引擎,它在html标签增加额外的属性来达到模板+数据的展示方式,由于浏览器解释html时,忽略未定义的标签属性,因此thymeleaf的模板可以静态运行。;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
    ②提供标准和spring标准两种方言,可以直接套用模板实现JSTL、OGNL表达式效果,同时开发人员也可以扩展和创建自定义的方言。
    ③提供spring标准方言和一个与SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器等功能
  2.模板样式
    允许使用六种模板,每个被称为一种模板模式:HTML、XML、TEXT、JAVASCRIPT、CSS、RAW。这其中有两种标记语言模板模式(HTML,XML),三种文本语言模板模式(TEXT,JAVASCRIPT,CSS),和一种无操作模板模式(RAW)
  3.官网地址:http://www.thymeleaf.org
二.集成方式
  1.thymeleaf + SpringMVC
    ❶引入相应jar包


    ❷在xml中配置thymeleaf视图解析器


    ❸传统jsp开发采用SpringMVC的视图解析器


    ❹集成了Spring 3.x 和Spring 4.x 根据需要选择不同的jar包
  官网地址:http://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html
  2.thymeleaf + SpringBoot
    ❶引入相应jar包


    ❷在yml中配置thymeleaf视图解析器


  3.HTML头文件格式

三.标准表达式语法
1.支持语法

  • 简单表达式:
  1. 变量表达式: ${...}
  2. 选择变量表达式: *{...}
  3. 消息表达式: #{...}
  4. 链接URL表达式: @{...}
  5. 片段表达式: ~{...}
  • 字面
  1. 文本文字:'one text','Another one!',...
  2. 号码文字:0,34,3.0,12.3,...
  3. 布尔文字:true,false
  4. 空文字: null
  5. 文字标记:one,sometext,main,...
  6. 文字操作:
  7. 字符串连接: +
  8. 文字替换: |The name is ${name}|
  • 算术运算:
  1. 二元运算符:+,-,*,/,%
  2. 减号(一元运算符): -
  • 布尔运算:
  1. 二元运算符:and,or
  2. 布尔否定(一元运算符): !,not
  • 比较和平等:
  1. 比较:>,<,>=,<=(gt,lt,ge,le)
  2. 平等运营商:==,!=(eq,ne)
  • 有条件的操作符:
  1. IF-THEN: (if) ? (then)
  2. IF-THEN-ELSE: (if) ? (then) : (else)
  3. 默认: (value) ?: (defaultvalue)
  • 特殊令牌:
  1. 无操作: _

2.变量表达式


3.选择表达式(也叫星号表达式)


4.文字国际化表达式
  从一个外部文件获取区域文字信息(.properties)。
  th:text:转义HTML代码
  th:utext:不会转义HTML代码


5.URL表达式
  绝对路径:@{ http://www.thymeleaf.org}
  相对路径:@{/order/{id}/details(id=${orderId})}
6.内联js
  引入 th:inline="javascript"
  [[***]]:转义HTML代码
  [(***)]:不会转义HTML代码


7.模板布局(片段引用)
  引入 th:fragment 或者直接使用选择器
  th:insert:插入指定的片段作为其主机标签的主体
  th:replace:用指定的片段来替换它的主机标签
  th:include:只是插入这个片段的内容


8.常用th标签


9.表达式工具对象
  #execInfo:关于正在处理的模板的信息。
  #messages:在变量表达式中获得外部化消息的方法,与使用#{...}语法获得的方式相同。
  #uris:用于转义URL / URI部分的方法
  #conversions:执行配置的转换服务的方法(如果有的话)。
  #dates:针对java.util.Date对象的方法,包括日期格式化等
  #calendars:类似于#dates,但是对于java.util.Calendar对象。
  #numbers:针对numeric对象格式化的方法。
  #strings:针对String对象的方法:contains,startsWith,prepending / appending等
  #objects:针对object的方法。
  #bools:针对boolean运算的方法。
  #arrays:针对数组的方法。
  #lists:针对List的方法。
  #sets:针对Set的方法。
  #maps:针对Map的方法。
  #aggregates:在数组或集合上创建聚合的方法。
  #ids:处理可能重复的id属性的方法(例如,作为迭代的结果)。
    例如:
      dates
        ${#dates.format(date, 'dd/MMM/yyyy HH:mm')}
        ${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}
        ${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}
        ${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}
        ${#dates.createNow()}
        ${#dates.createToday()}
      strings
        ${#strings.isEmpty(name)}
        ${#strings.arrayIsEmpty(nameArr)}
        ${#strings.listIsEmpty(nameList)}
        ${#strings.setIsEmpty(nameSet)}
        ${#strings.length(str)}
        ${#strings.equals(str)}
        ${#strings.equalsIgnoreCase(str)}

Thymeleaf入门基础的更多相关文章

  1. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  2. 01shell入门基础

    01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...

  3. Markdown入门基础

    // Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...

  4. JavaScript入门基础

    JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...

  5. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  6. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  7. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  8. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

  9. AngularJS入门基础PPT(附下载链接)

    学习了Angularjs有段时间,自己写了一个PPT,个人认为总结的非常全面,对于入门基础够了. 大致模块有:Angularjs简单介绍,Angularjs特性,hello world,Control ...

随机推荐

  1. scrapy_数据收集

    什么是数据收集器? 数据以key/value形式存在,收集一些状态,简化数据收集的状态 计算到底发送了多少request等等统计信息 如何对404页面进行设置? 通过response.status等于 ...

  2. BSA Network Shell系列-通过NSH执行Powershell,VBScript或bat files脚本

    参考:Running Powershell, VBScript, or bat files via NSH 如果你直接在NSH命令行执行的话,可以参考我翻译的下面的东东,如果想运行NSH 脚本作业的话 ...

  3. 使用SoapUI调用Vsphere Web Service

    项目中经常需要调用Webservice进行验证测试,下面就介绍下如何使用测试工具SoapUI调用Vsphere vcenter的 Web Service VSphere的Webservice地址默认为 ...

  4. junit的意义

    写了这么久代码了,自己从来没有好好的玩过junit.马上过年了,打算趁这段时间自己来写一套web框架,但是这里有一个很大的尴尬就是我平时编码并没有认真的来写测试类.那么自己在写框架的时候,不测试肯定是 ...

  5. 在Tomcat中采用基于表单的安全验证

    .概述   (1)基于表单的验证 基于From的安全认证可以通过TomcatServer对Form表单中所提供的数据进行验证,基于表单的验证使系统开发者可以自定义用户的登陆页面和报错页面.这种验证方法 ...

  6. How do I copy SQL Azure database to my local development server?(如何将Azure 中的数据库备份到本地)

    Now you can use the SQL Server Managerment Studio to do this: Connect to the SQL Azure database. 通过 ...

  7. Laravel (5.5.33) 加载过程(一)

    说明:  由于公司项目使用Laravel 框架  也是第一次接触此框架  作为一个新手 记录使用过程的一些事情  以及对于框架源码分析的记录  整理自己的思路 也希望对大家有帮助  如果那里不对的地方 ...

  8. UOJ Round #15 [构造 | 计数 | 异或哈希 kmp]

    UOJ Round #15 大部分题目没有AC,我只是水一下部分分的题解... 225[UR #15]奥林匹克五子棋 题意:在n*m的棋盘上构造k子棋的平局 题解: 玩一下发现k=1, k=2无解,然 ...

  9. 夏令营讲课内容整理Day 1.

    主要内容是栈和队列. 1.  栈 运算受到限制的线性表.只允许从一端进行插入和删除等操作.这一端便是栈顶,另一端便是栈底. 其实可以把栈想象层任何有底无盖的柱状的容器...毕竟栈满足后进先出的特性.计 ...

  10. BZOJ 3771: Triple [快速傅里叶变换 生成函数 容斥原理]

    题意:n个物品,可以用1/2/3个不同的物品组成不同的价值,求每种价值有多少种方案(顺序不同算一种) [生成函数]: 构造这么一个多项式函数g(x),使得n次项系数为a[n]. 普通型生成函数用于解决 ...