Thymeleaf 模板引擎

变量表达式
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
${attr} -> 用法和jstl一致,获取model中携带的参数
选择表达式
*{attr} -> 方式一,获取model中携带的参数
<div th:object="${user}"> -> 方式二,获取变量中的属性
    <input type="text" th:field="*{username}"/><br/>
    <input type="text" th:field="*{password}"/><br/>
</div>
地址表达式
@{/static/image/image.jpg} ->  localhost:8080/static/image/image.jpg
资源表达式
在资源根目录下配置国际化文件
messages.properties -> attr = Default
messages_en_US.properties -> attr = English
messages_zh_CN.properties -> attr = Chinese
<span th:text="#{attr}">attr</span> -> 示例

基本表达式对象
#ctx -> context
#locale:contextScope
#vars:contextVar
#request -> HttpServletRequest
#session -> HttpSession
#servlet -> ContextServletContext
#response -> HttpServletResponse

工具表达式对象
#dates -> java.util.Date 
<span th:text="${#dates.format(date,'yyyy-MM-dd')}">2019-01-01</span>
#calendars -> java.util.Calendar
#numbers 数字格式化对象,参数1:格式化对象,参数2:保留整数位,参数3:保留小数位
<span th:text="${#numbers.formatDecimal(200,1,2)}">180.00</span>
#strings -> java.lang.String
#objects -> object
#bools -> boolean
#arrays -> array
#lists -> list
#sets -> set
#maps -> map
#aggregates 创建数组或集合的聚合的工具方法
#messages 变量表达式内部获取外化消息
#ids 处理id重复出现
片段表达式
<div th:insert="~{header :: header}"></div> -> 页面引入页眉
th:each 循环迭代
<ul>
    <li -> integerStat意为状态,命名规则是*Stat,*意为循环变量integer
        th:each="integer,integerStat:${integers}">
        <span th:text="${integer}"/><br/>
    </li>
</ul>
th:text 普通文本
<span th:text="${span}">span</span>
th:utext 富文本
<span th:utext="${utext}"></span>
th:value 属性值
<input th:value="${value}"/>
th:href 超链接
<a href="/async" th:href="@{thymeleaf}">thymeleaf</a>
th:action 表单请求地址,th:method 表单请求方式
<form th:action="@{thymeleaf}" th:method="post">
    <input type="text" />
    <button type="submit" />
</form>
th:object 数据模型
<div th:object="${user}">
    <input type="text" th:field="*{username}"/>
    <input type="text" th:field="*{password}"/>
</div>
th:if 条件成立显示标签
<span th:if="${200 gt 100}">compare</span> 

if-then -> true?true:false;
if-then-else -> true?(true?true:false):false
th:unless 条件不成立显示标签
<span th:unless="${200 lt 100}">compare</span> 
th:switch 显示条件成立的分支标签
<td th:switch="1">
    <input th:case="2" value="2"/>
    <input th:case="3" value="3"/>
    <input th:case="*" value="1"/> -> * as default
</td>
th:src 超链接地址
<img th:src="@{/static/image/image.jpg}" />
th:selected 下拉选择框
<select>
    <option>全部</option>
    <option th:selected="true">选中</option> -> 条件成立选中
    <option th:selected="false">不选中</option> -> 条件不成立不选中
</select>
th:attr 标签属性
<input th:attr="value=value,name=name"/> -> 设置属性
<input th:attrprepend="id=id"> -> 前追加属性
<input th:attrappend="class=class"> -> 后追加属性
th:checked 单选框或复选框选中
<input type="checkbox" th:checked="${true}"/>
th:id 标签唯一标识
<input th:id="id"/>
th:class 标签类名
<input th:class="class"/> -> 添加类名
<input th:classappend="append"/> -> 追加类名
th:with 局部变量
<div th:with="attr=${span}"> -> 定义局部变量
    <span th:text="${attr}"></span> -> 获取局部变量
</div>
th:style 标签样式
<img th:style="'width:50px;height:50px;'"/>
th:remove 标签移除
body:移除ul包含的标签|all:移除ul及其包含的标签|all-but-first:只保留第一个li
none:无效果|tag:删除当前标签(ul)
<ul th:remove="tag">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
th:block 控制标签显示
<th:block th:if="true">
    <span>block</span> -> 条件成立显示,不成立不显示
</th:block>
th:insert 插入页面
<div th:insert="~{header :: header}"></div> -> 第一个参数是页面名
th:include 包含页面
<div th:include="footer :: footer"></div> -> 第二个参数是页面片段名
th:replace 替代页面
<div th:replace="center :: center"></div> -> 同上
th:inline 内联
<script type="text/javascript" th:inline="javascript">
   var span = [[${span}]]; -> JS内联,获取后台数据
</script>
<span th:inline="text">[[${span}]]</span> -> 文本内联,获取后台数据
<span th:inline="none">[[${span}]]</span> -> 取消内联,标签体显示原文本
th:fragment 页面片段
<div th:fragment="header">
    thymeleaf header ! -> 作为页面片段被引入到主页面
</div>
|...| 字符串合并
<span th:text="${'*'+span}">pin</span> -> 方式一
<span th:text="|abc ${span}|">jie</span> -> 方式二
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容