⒈理解Thymeleaf

  • Java模板引擎。能够处理HTML、XML、JavaScript、CSS甚至纯文本。类似JSP、Freemarker
  • 自然模板。原型即页面
  • 语法优雅易懂,OGNL、SpringEL
  • 遵从Web标准。支持HTML5

⒉如何识别Thymeleaf标准方言

  1.需要页面引入命名空间

1 <html xmlns:th="http://www.thymeleaf.org">
2     <head>
3     </head>
4     <body>
5         <span th:text="...">
6     </body>
7 </html>
8     

  2.无需页面引入命名空间 

1 <span data-th-text="...">

⒊语法

  1.${...}:获取变量值,OGNL

    ①获取对象的属性,调用方法

    ②使用内置的基本对象

    ③内置的一些工具对象 

1 <span th:text="${book.author.name}">

  2.*{...}:变量选择表达式,和${...}在功能上是一样的,区别在于,它是在当前选择的对象执行,而不是在整个上下文变量映射上。配合th:object使用简化代码

1     <div th:object="${book}">
2         <span th:text="*{title}"></span>
3     </div>

  3.#{...}:获取国际化内容

1 <span th:text="#{header.address.city}"></span>

  4.@{...}:定义URL

1     <!--链接表达式可以是相对的,在这种情况下,应用程序上下文将不会作为URL的前缀-->
2     <a th:href="@{../documents/report}"></a>
3     <!--也可以是服务器相对(同样没有应用程序上下文前缀)-->
4     <a th:href="@{~/contents/main}"></a>
5     <!--和协议相对(就像绝对URL,但浏览器将使用在显示的页面中使用的相同的HTTP或HTTPS协议)-->
6     <a th:href="@{//static.coreqi.cn/res/initial}"></a>
7     <!--当然,链接表达式也可以是绝对的-->
8     <a th:href="@{http://www.coreqi.cn}"></a>

  5.~{...}:片段引用表达式

1     <div th:fragment="copy">
2         &copy; 2019 <a href="http://www.coreqi.cn">Coreqi</a>
3     </div>
4
5     <div th:insert="~{footer :: copy}"></div>

  6.字面量(文字)

    ①文本   

1     <span th:text="'Hello World!'"></span>

    ②数字

1     <span th:text="2019"></span>
2     <span th:text="2019 + 2"></span>

    ③布尔

1     <div th:if="${user.isAdmin()} == false">
2         ...
3     </div>

    ④Null

1     <div th:if="${user.phoneNum} == null">
2         ...
3     </div>

  7.算术操作

    ①+、-、*、/、% 

1     <div th:text="${users.count} % 2 == 0">
2        ....
3     </div>

  8.比较和等价

    ①比较:>、<、>=、<=(gt、lt、ge、le)

1     <div th:if="${page.totalPages le 7}">

    ②等价:==、!=(eq、ne)

1     <div th:if="${page.totalPages eq 7}">

  9.条件运算符

1     <div th:class="${row.even}? 'even' : 'odd'"></div>

  10.无操作(什么都不做)

1     <span th:text="${user.name}? : _">如果无操作则保留此处文本,不作覆盖</span>

  11.设置属性值

     ①设置任意属性值  th:attr

1     <form th:attr="action=@{/coreqi}">
2         <input type="submit" th:attr="value=#{subscribe.submit}"/>
3     </form>

    ②设置指定属性值  

1     <form th:action="@{/coreqi}">
2         <input type="submit" th:value="#{subscribe.submit}"/>
3     </form>

    ③固定布尔属性

1     <form th:action="@{/coreqi}">
2         <input type="checkbox" name="option1" checked/> <!--HTML-->
3         <input type="checkbox" name="option2" checked="checked"/>   <!--XHTML-->
4         <input type="checkbox" name="option3" th:checked="${user.active}"/>
5     </form>

  12.迭代器

    ①基本的迭代 th:each  

1  <li th:each="book : ${books}" th:text="${book.title}"></li>

     状态变量:用于跟踪迭代器的状态。

     index【索引】、count【索引+1】、size【总数】、current【当前迭代的变量】、even/odd【是奇数还是偶数】、first【迭代器第一个】、last【迭代器最后一个】

1    <tr th:each="prod,iterStat : ${prods}" th:class="${iterStat.odd}? 'odd'"></tr>

  13.条件语句

    ①th:if  判断条件是否成立,true成立,false不成立,非0成立,null不成立。   

1     <div th:if="${not #lists.isEmpty(prod.comments)}">
2         ...
3     </div>

    ②th:unless  不成立则执行

1     <div th:unless="${#lists.isEmpty(prod.comments)}">
2         ...
3     </div>

    ③switch  当有一个匹配后,剩下的全为false

1     <div th:switch="${user.role}">
2         <p th:case="'admin'"></p>
3         <p th:case="#{roles.manager}"></p>
4         <p th:case="*"></p>
5     </div>

⒋Thymeleaf属性的优先级

⒌注释

  ①标准HTML/XML注释

1     <!--<span th:text="'fanqi'"></span>-->

  ②Thymeleaf解析器级注释块---在解析的过程中删除掉<!--/*-->和<!--*/-->之间的所有内容

1     <!--/*-->
2     <div>
3         Hello World!
4     </div>
5     <!--*/-->

  ③原型注释块

    在静态页面的时候是注释掉的,是不会显示的。当被Thymeleaf解析器解析的时候,这些注释的代码将会显示出来。

1     <span>Hello!</span>
2     <!--/*/
3         <div th:text="${...}">
4             ...
5         </div>
6     /*/-->
7     <span>Good Bye!</span>

⒍内联

  1.内联表达式

    ①[[...]]或[(...)]分别对应于th:text【会对一些特殊符号进行转义】和th:utext【不会对一些特殊符号进行转义】

  2.禁用内联表达式  th:inline="none" 

1     <p th:inline="none">输出以下文本内容:[[1,2,3],[4,5]]!</p>

  3.JavaScript内联

1     <script th:inline="javascript">
2         var username=/*[[${session.user.name}]]*/ "Gertrud Kiwifruit";
3     </script>

  4.css内联

1     <style th:inline="css">
2         .[[${classname}]]{3             text-align: [[${align}]];
4         }
5     </style>

⒎表达式基本对象

  1.基本对象

    ①#ctx:上下文对象。是org.thymeleaf.context.IContext或者org.thymeleaf.context.IWebContext的实现。 

1 ${#ctx.locale}
2 ${#ctx.variableNames}
3 ${#ctx.request}
4 ${#ctx.response}
5 ${#ctx.session}
6 ${#ctx.servletContext}

    ②#locale:直接访问与java.util.Locale关联的当前的请求。 

1 ${#locale}

  2.request/session等属性对象

    ①param:用于检索请求参数

1 ${param.foo}
2 ${param.size()}
3 ${param.isEmpty()}
4 ${param.containsKet('foo')}
5 ...

    ②session:用于检索session属性  

1 ${session.foo}
2 ${session.size()}
3 ${session.isEmpty()}
4 ${session.containsKey('foo')}
5 ...

    ③application:用于检索application/servlet上下文属性

1 ${application.foo}
2 ${application.size()}
3 ${application.isEmpty()}
4 ${application.containsKey('foo')}
5 ...

  3.Web上下文对象

    ①#request:直接访问与当前请求关联的javax.servlet.http.HttpServletRequest对象。

1 ${#request.getAttribute('foo')}
2 ${#request.getParameter('foo')}
3 ${#request.getContextPath()}
4 ${#request.getRequestName()}
5 ...

    ②#session:直接访问与当前请求关联的javax.servlet.http.HttpSession对象

1 ${#session.getAttribute('foo')}
2 ${#session.id}
3 ${#session.lastAccessedTime}
4 ...

    ③servletContext:直接访问与当前请求关联的javax.servlet.ServletContext对象。

1 ${#servletContext.getAttribute('foo')}
2 ${#servletContext.contextPath}
3 ...

⒏相关配置

1 #Thymeleaf 编码
2 spring.thymeleaf.encoding=UTF-8
3 #禁用Thymeleaf缓存,使用热部署静态文件
4 spring.thymeleaf.cache=false
5 #使用HTML5标准
6 spring.thymeleaf.mode=HTML5

    

转载于:https://www.cnblogs.com/fanqisoft/p/10529614.html

Thymeleaf相关补充相关推荐

  1. Trimble Data Conversion编程相关补充

    Trimble Data Conversion编程相关补充 本文是对天宝数字水准仪数据转换小程序程序编写的一个补充. 界面设计 本程序的主要功能: 打开: 生成观测手簿: 输出平差易格式: 根据程序的 ...

  2. 类型的方法,以及关于Stringbuffer和String builder的相关补充

    xxxValue() 方法用于将 Number 对象转换为 xxx 数据类型的值并返回. 相关的方法有: 类型 方法及描述 byte byteValue() : 以 byte 形式返回指定的数值. a ...

  3. 第十七届智能视觉组线上赛比赛流程及相关补充说明

      线上赛规则及流程发布后陆续收到参赛同学和老师们的建议,一部分建议可以使得竞赛过程更完善,故增加此文档对智能视觉组的流程及相关细节进行补充说明. 一.场地准备   在"第十七届全国大学生智 ...

  4. Html入门学习笔记05—相关补充和映射、数字移动

    很久很久以前学习html的笔记记录,很随意,但都是自己记录的,希望对需要的人有所帮助. 本文使用word2013编辑并发布 Postbird | There I am , in the world m ...

  5. scriptlet相关补充

    变量声明:使用<%%>定义的变量为局部变量,只在当前页面有效,每次页面刷新,这个值就被重新声明,因此会恢复到声明时的值 使用<%!%>定义的变量为全局变量,页面刷新,这个变量不 ...

  6. thymeleaf的能用在什么地方_细品 Spring Boot+Thymeleaf,还有这么多好玩的细节!

    松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->松哥要升级 SpringBoot 视频了,看看新增了哪些内容! 虽然现在流行前后端分离,但是后端模版在一些关键地方 ...

  7. thymeleaf依赖_玩转SpringBoot集成 Thymeleaf 模版引擎

    随着互联网技术的发展,在前后端分离开发模式已经逐渐成为主流的今天,前后端技术的划分也越来越清晰,社会分工进一步细化,职业岗位也更加细分,慢慢开始就有了前端攻城狮和后端攻城狮,技术也进一步细分,出现了以 ...

  8. java 模板引擎_极简 Spring Boot 整合 Thymeleaf 页面模板

    点击"牧码小子"关注,和众多大牛一起成长! 关注后,后台回复 java ,领取松哥为你精心准备的技术干货! 虽然现在慢慢在流行前后端分离开发,但是据松哥所了解到的,还是有一些公司在 ...

  9. java 模板引擎_SpringBoot入门系列(四)如何整合Thymeleaf模板引擎

    前面介绍了Spring Boot的优点,然后介绍了如何快速创建Spring Boot 项目.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/ ...

最新文章

  1. max7456 C语言,用于MAX7456随屏显示器SPI
  2. adobe aem_AEM中的单元测试(大声思考)
  3. 笔记本电脑下载python视频教程-如何使用Python访问/下载OneNote笔记本?
  4. 选择结构_单if语句
  5. margin background_margin:auto与布局展示
  6. Python笔记-类装饰器
  7. 趋势探讨:容器会取代虚拟机吗?
  8. MapReduce的API介绍
  9. solaris 查看CPU资源占用情况!
  10. Spss做相关性分析
  11. 你是否还记得c语言的这些文件操作?
  12. STM32F030R8移植freeModbus协议栈
  13. Windows 去除桌面烦人的小箭头
  14. Apple watch ,小米微信通知
  15. 离散数学复习--集合的势证明
  16. 深度学习常见数据集汇总
  17. 计算机科学基础刘小丽,刘小丽
  18. Rocket Chip 介绍
  19. SK-YCC营销软件让我业务量上一台阶
  20. **关于maven的,maven配置后报 java.lang.UnsupportedClassVersionError: org/codehaus/plexus/classworlds/launche

热门文章

  1. git http仓库账号密码缓存至本地:不用每次git push都需要输入密码的方法(类似于windows的凭据管理)
  2. HBase oldWALs目录文件剧增占用磁盘空间问题
  3. 配置CentOS 7阿里云镜像源
  4. MySQL repeat复制函数示例
  5. matlab simulink_运用MATLAB和Simulink开发自动驾驶控制系统
  6. Coding: 一亿个数找最大的1000个数
  7. 使用命令行对Android应用签名
  8. block作用域与流程控制(块block、if-else、while、do-while、for-foreach、switch-case、break、continue、label)
  9. 基本语法及基本概念概述(标识符、访问修饰符、变量、数组、枚举、注释、空行、继承、接口、(对象、类、方法、实例变量)、关键字表)
  10. mysqladmin mysql,mysql,mysqladmin,mysqld之间的区别