内联 [ [ ] ]

内联⽂本:[ […] ] 内联文本的表示方式,使⽤时,必须先⽤th:inline=“text/javascript/none” 激活,th:inline 可以在父级标签内使⽤,甚⾄可以作为 body 的标签。内联⽂本⽐ th:text 的代码少,不利于原型显示。

⻚页⾯面 inline.html(⽂文本内联):

<div>
<h1>内联</h1>
<div th:inline="text" >
<p>Hello, [[${userName}]] !</p>
<br/>
</div>
</div>

以上代码等价于:

<div>
<h1>不不使⽤用内联</h1>
<p th:text="'Hello, ' + ${userName} + ' !'"></p>
<br/>
</div>

如果想在脚本中使⽤用后端传递的值,则必须使⽤用脚本内联,脚本内联可以在 js 中取到后台传过来的参数:

<script th:inline="javascript">
var name = [[${userName}]] + ', Sebastian';
alert(name);
</script>

注:不使用内联会先显示alert弹窗再显示内容。

基本对象

  • #ctx :上下文对象
  • #vars :上下文变量
  • #locale :区域对象
  • #request :(仅 Web 环境可用)HttpServletRequest 对象
  • #response :(仅 Web 环境可⽤)HttpServletResponse 对象
  • #session :(仅 Web 环境可用)HttpSession 对象
  • #servletContext :(仅 Web 环境可用)ServletContext 对象

后台添加⽅法传值:

@RequestMapping("/object")
public String object(HttpServletRequest request) {request.setAttribute("request","i am request");
request.getSession().setAttribute("session","i am session");
return "object";
}

使⽤用 request 和 session 分别传递了了⼀一个值,再来查看⻚页⾯面 object.html。

<body>
<div >
<h1>基本对象</h1>
<p th:text="${#request.getAttribute('request')}">
<br/>
<p th:text="${session.session}"></p>
Established locale country: <span th:text="${#locale.country}">CN</span>.
</div>
</body>

内嵌变量

  • dates:java.util.Date 的功能⽅方法类
  • calendars:类似 #dates,⾯面向 java.util.Calendar
  • numbers:格式化数字的功能⽅方法类
  • strings:字符串串对象的功能类,contains、startWiths、prepending/appending 等
  • objects:对 objects 的功能类操作
  • bools:对布尔值求值的功能⽅方法
  • arrays:对数组的功能类⽅方法
  • lists:对 lists 的功能类⽅方法
  • sets:set 的实⽤用⽅方法
  • maps:map 的实⽤用⽅方法
    1. dates
<!--格式化时间-->
<p th:text="${#dates.format(date, 'yyyy-MM-dd HH:mm:ss')}">neo</p>
<!--创建当前时间 精确到天-->
<p th:text="${#dates.createToday()}">neo</p>
<!--创建当前时间 精确到秒-->
<p th:text="${#dates.createNow()}">neo</p>

2. strings

<!--判断是否为空-->
<p th:text="${#strings.isEmpty(userName)}">userName</p>
<!--判断 list 是否为空-->
<p th:text="${#strings.listIsEmpty(users)}">userName</p>
<!--输出字符串长度-->
<p th:text="${#strings.length(userName)}">userName</p>
<!--拼接字符串-->
<p th:text="${#strings.concat(userName,userName,userName)}"></p>
<!--创建⾃定长度的字符串-->
<p th:text="${#strings.randomAlphanumeric(count)}">userName</p>

后端传值:

@RequestMapping("/utility")
public String utility(ModelMap map) {map.addAttribute("userName", "neo");
map.addAttribute("users", getUserList());
map.addAttribute("count", 12);
map.addAttribute("date", new Date());
return "utility";
}

显示效果:

内嵌变量量
2018-09-26 20:49:07
Wed Sep 26 00:00:00 CST 2018
Wed Sep 26 20:49:07 CST 2018
false
[false, false, false]
3
neoneoneo
QKERBVPRHFS9

表达式

表达式共分为以下五类。

  • 变量量表达式:${…}
  • 选择或星号表达式:*{…}
  • ⽂文字国际化表达式:#{…}
  • URL 表达式:@{…}
  • ⽚片段表达式:~{…}

变量量表达式
变量表达式即 OGNL 表达式或 Spring EL 表达式(在 Spring 术语中也叫 model attributes),类似${session.user.name}

<span th:text="${book.author.name}">
<li th:each="book : ${books}">

选择(星号)表达式
选择表达式很像变量表达式,不不过它们用一个预先选择的对象来代替上下文变量容器(map)来执行,类似: *{customer.name}

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

被指定的 object 由 th:object 属性定义:

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

title 即为 book 的属性。

文字国际化表达式
⽂字国际化表达式允许我们从⼀个外部文件获取区域文字信息(.properties),用 Key 索引 Value,还可以提供⼀组参数(可
选)。

<table>
...
<th th:text="#{header.address.city}">...</th>
<th th:text="#{header.address.country}">...</th>
...
</table>

URL 表达式
URL 表达式指的是把一个有⽤的上下⽂文或回话信息添加到 URL,这个过程经常被叫做 URL 重写,比如 @{/order/list} 。

  • URL 还可以设置参数: @{/order/details(id=${orderId})} 相对路路径:
  • @{…/documents/report}
<form th:action="@{/createOrder}">
<a href="main.html" th:href="@{/main}">

片段表达式
⽚段表达式是 3.x 版本新增的内容。⽚段表达式是一种标记的片段,并将其移动到模板中的⽅方法。⽚段表达式的优势是,片段可以被复制或者作为参数传递给其他模板等。
最常见的⽤法是使⽤ th:insert 或 th:replace: 插入片段:

<div th:insert="~{commons :: main}">...</div>

也可以在⻚面的其他位置去使用:

<div th:with="frag=~{footer :: #main/text()}">
<p th:insert="${frag}">
</div>

常用 th 标签







还有⾮常多的标签,这⾥只列列出最常用的几个,由于一个标签内可以包含多个 th:x 属性,其生效的优先级顺序为:

include,each,if/unless/switch/case,with,attr/attrprepend/attrappend,value/href,src ,etc,text/utex
t,fragment,remove

Thymeleaf 配置

我们可以通过 application.properties ⽂件灵活的配置 Thymeleaf 的各项特性,以下为 Thymeleaf 的配置和默认参数:

# THYMELEAF (ThymeleafAutoConfiguration)
#开启模板缓存(默认值:true)
spring.thymeleaf.cache=true
#检查模板是否存在,然后再呈现
spring.thymeleaf.check-template=true
#检查模板位置是否正确(默认值:true)
spring.thymeleaf.check-template-location=true
#Content-Type的值(默认值:text/html)
spring.thymeleaf.content-type=text/html
#开启MVC Thymeleaf视图解析(默认值:true)
spring.thymeleaf.enabled=true
#模板编码
spring.thymeleaf.encoding=UTF-8
#要被排除在解析之外的视图名称列列表,⽤用逗号分隔
spring.thymeleaf.excluded-view-names=
#要运⽤用于模板之上的模板模式。另⻅见StandardTemplate-ModeHandlers(默认值:HTML5)
spring.thymeleaf.mode=HTML5
#在构建URL时添加到视图名称前的前缀(默认值:classpath:/templates/)
spring.thymeleaf.prefix=classpath:/templates/
#在构建URL时添加到视图名称后的后缀(默认值:.html)
spring.thymeleaf.suffix=.html
#Thymeleaf 模板解析器器在解析器器链中的顺序,默认情况下,它排第⼀一位,顺序从1开始,只有在定义了了额外的 TemplateResolv
er Bean 时才需要设置这个属性。
spring.thymeleaf.template-resolver-order=
#可解析的视图名称列列表,⽤用逗号分隔
spring.thymeleaf.view-names=

StringBoot(模板 Thymeleaf 高阶用法)相关推荐

  1. 【性能测试】如何用一条命令完全掌握linux系统性能监控(top高阶用法)

    目  录 一 引 言 二 top命令高阶用法 场景1:采样3次,采样间隔为10s: 场景2:采样2h,采样间隔为10s,性能数据保存到test.csv文件中: 一 引 言 熟悉CentOS linux ...

  2. ifdef的用法_chisel 高阶用法简介--rocket-chip generator

    本文将介绍chisel的三个高阶用法:diplomacy,cake pattern和参数化. diplomacy 什么是diplomacy?互联参数的自动协商. 痛点在哪里: 传统的SoC集成中,互联 ...

  3. Peewee 高阶用法

    Peewee 高阶用法 前言 本文介绍的Peewee方法语法基于PostgreSQL 高阶用法 元组多条件查询 from peewee import Tuple e.g.: 1. model.sele ...

  4. python mockito arg_that_编程高阶用法–开发者高频词汇

    开发者总会在开发时遇到变量命名困难或者命名冗长庸俗的时候. 阅读代码过程中遇到一些很好的命名,也遇到一些不好的. 当初并没有记录下来,之后才开始记录,有的也找不到出处了.以下高频词汇供有追求的开发者参 ...

  5. React之ref的高阶用法

    forwardRef转发Ref forwardRef的初衷就是解决ref不能跨层级捕获和传递的问题,forwardRef接受了父级元素标记的ref信息,并把它转发下去,使得子组件可以通过props来接 ...

  6. day67 ORM模型之高阶用法整理,聚合,分组查询以及F和Q用法,附练习题整理

    归纳总结的笔记: day67ORM特殊的语法一个简单的语法 --翻译成--> SQL语句语法:1. 操作数据库表 创建表.删除表.修改表2. 操作数据库行 增.删.改.查怎么连数据库:需要手动创 ...

  7. mysql的高阶用法_MySQL的经典用法(十四)-高级优化

    mysql的经典用法(十四)----高级优化 基于 /application/search/mysql/mysql-5.5.28/support-files/my-innodb-heavy-4G.cn ...

  8. Nginx高阶用法(一)

    Nginx 状态页   基于nginx模块ngx_http_auth_basic_module实现,在编译安装nginx的时候需要添加编译参数--with-http_stub_status_modul ...

  9. Flask学习与项目实战3:简单入手模板及高阶使用

    声明:本学习系列笔记是来源B站 知了传课 up主的教学视频的个人学习笔记,原up主教学视频地址:https://www.bilibili.com/video/BV17r4y1y7jJ?p=10. 模板 ...

最新文章

  1. apollo mqtt linux qt,MQTT第5版更新,以及如何应用到Qt MQTT模块中
  2. python 內建数据类型
  3. 1095 Cars on Campus (30 分)【难 / 模拟 未完成】
  4. python 解析xml格式_Python解析XML文件
  5. springboot项目修改个人头像
  6. Java实现消息发送
  7. python3.7和2.7_为两个python版本(2.7和3.7)Windows 10安装pip
  8. SSH远程启动tomcat后,退出SSH,tomcat也退出
  9. 【Hibernate教程】框架体系介绍
  10. 去除黄褐斑的方法,姬净美怎么样
  11. 3个基于 Spring Boot 的图片识别处理系统
  12. linux日志切割命令,linux日志分割、去重、统计
  13. win7电脑设置自动关机
  14. Xdebug中文文档-堆栈跟踪
  15. 手势操作实用教程 | 实现「滑动清除」效果
  16. 生成排列 --- 蛮力法,Johnson-Trotter算法
  17. 第三届计算机网络安全与软件工程国际学术会议(CNSSE 2023)
  18. Unity3d Camera FOV
  19. Infortrend存储集成了Docker,客户该怎么用?
  20. 树莓派连接显示器——Micro hdmi转VGA

热门文章

  1. 在Kaggle上使用Stable Diffusion进行AI绘图
  2. Portraiture是什么插件?
  3. java 加盖电子印章_Java给pdf加盖电子章
  4. 用Python调教微信,实现自动回复 和 微信好友分布,好友性别图,好友标签
  5. 国内外GIS流行软件之概述
  6. PDF转换成jpg格式应该怎么转
  7. 2020-03-15
  8. zoj 1107 FatMouse and Cheese 逆向动态规划
  9. java实现区域生长算法_区域生长算法(附MATLAB代码实现)
  10. CISCO 3750 BUG