thymeleaf

1、通过${}来获取model中的变量,注意这不是el表达式,而是ognl表达式,但是语法非常像

<h2 th:object="${user}">
    <p>Name: <span th:text="*{name}">Jack</span>.</p>
    <p>Age: <span th:text="*{age}">21</span>.</p>
    <p>friend: <span th:text="*{friend.name}">Rose</span>.</p>
</h2>

<h2 th:object="${user}">
    <p>FirstName: <span th:text="*{name.split(' ')[0]}">Jack</span>.</p>
    <p>LastName: <span th:text="*{name.split(' ')[1]}">Li</span>.</p>
</h2>

<span th:text="${#dates.format(today,'yyyy-MM-dd')}">2018-04-25</span>

<span th:text="'thymeleaf'">template</span> //字符串常量值

2、判断

<div th:if="true">
    当条件为true则显示。
</div>

<div th:unless ="false">
    当条件为false 则显示
</div>

 3、进行文本替换

<span th:text="你好"></span>  //不会解析html
<span th:text="你好"></span>  //会解析html

4、switch使用

<div th:switch="${user.name}">
      <p th:case="'ljk'">User is  ljk</p>
      <p th:case="ljk1">User is ljk1</p>
</div>

5、each使用

<tr th:each="user : ${userList}" th:class="${userStat.odd}? 'odd'">
      <td th:text="${user.name}">Onions</td>
      <td th:text="${user.age}">2.41</td>
 </tr>

6、属性设置

//用于声明在标签上class 属性信息(th:class)
<p th:class=" 'even'? 'even' : 'odd'" th:text=" 'even'? 'even' : 'odd'"></p> 

//用于声明html中或自定义属性信息(th:attr)
<img  th:attr="src=@{/images/gtvglogo.png}" /> 输出为<img src="/sbe/images/gtvglogo.png">

//用于声明html中value属性信息(th:value)
<input type="text" th:value="${name}" />

//用于声明html from标签中action属性信息(th:action)
<form action="subscribe.html" th:action="@{/subscribe}">
       <input type="text" name="name" value="abc"/>
</form>
输出结果:
<form action="/sbe/subscribe">
       <input type="text" name="name" value="abc">
</form>

//用于声明htm id属性信息(th:id)
<p th:id="${id}"></p>
输出结果:
<p id="123"></p>

//用于声明htm 中的onclick事件(th:onclick)
<script type="text/javascript">
    function showUserInfo(){
        alert("i am zhuoqianmingyue!")
    }
</script>

<body>
   <p th:onclick="'showUserInfo()'">点我</p>
</body>

//用于声明htm 中的selected属性信息(th:selected)
<select>
    <option name="sex"></option>
    <option th:selected="1 == ${sex}"></option>
    <option th:selected="0 == ${sex}"></option>
</select>
输出结果:
<select>
<option name="sex"></option>
    <option selected="selected"></option>
    <option></option>
</select>

//用于thymeleaf 模版页面中局部变量定义的使用(th:with)
<p th:with="df='dd/MMM/yyyy HH:mm'">
        Today is: <span th:text="${#dates.format(today,df)}">13 February 2011</span>
    </p>

<div th:with="firstEle=${users[0]}">
    <p>
        第一个用户的名称是: <span th:text="${firstEle.name}"></span>.
    </p>
</div>

7、Elvis运算符

//Elvis运算可以理解成简单的判断是否为null的三元运算的简写,如果值为nullzhe显示默认值,如果不为null 则显示原有的值
<p>Age: <span th:text="${age}?: '年龄为nll'"></span></p>

8、三元表达式

//我们可以在thymeleaf 的语法中使用三元表达式 具体使用方法是在th:x 中通过 表达式?1选项:2选项
<p th:class=" 'even'? 'even' : 'odd'" th:text=" 'even'? 'even' : 'odd'"></p>
<p th:value="${name eq 'ljk' ? '帅哥':'丑男'}" th:text="${name eq 'ljk' ? '帅哥':'丑男'}"></p>

 9、Elvis运算符

//一种特殊简写操作,当显示的值为null 是就什么都不做
<
span th:text="${name} ?: _">no user authenticated</span>

10、如何使用内连操作

我们可以通过 在父标签声明 th:inline="text" 来开启内联操作。当然如果想整个页面使用可以直接声明在body上即可。具体使用方式如下面代码所示。
<div th:inline="text">
<p>Hello, [[${user.name}]]!</p>
</div>
等同于:
<div>
<p>Hello,zhuoqianmingyue!</p>
</div>

[[...]]对应于th:text,[(...)]对应于th:utext

11、禁用内联操作

这我们可以通过在父标签或者本标签上声明th:inline="none"来禁用内联的操作,如下面代码所示:
模版页面

12、JavaScript内联

如果我们想在JavaScript 中使用内联操作,需要在 script 标签上声明 th:inline="javascript" 然后我们就可以 script 标签中使用内联操作了。具体使用方式如下面代码所示:
<script th:inline="javascript">
    var username = [[${user.name}]];
</script>

<script th:inline="javascript">
    var username = "zhuoqianmingyue";
</script>

13、CSS内联

设我们将两个变量设置为两个不同的String值:
classname = 'main elems'
align = 'center'
我们可以像以下一样使用它们:
<style th:inline="css">
    .[[${classname}]] {
      text-align: [[${align}]];
    }
</style>

14、定义footer.html页面 该页面就是我们的引用片段代码

定义footer.html页面 该页面就是我们的引用片段代码
<body>
    <div th:fragment="copy">
        &copy; 2011 The Good Thymes Virtual Grocery
    </div>
</body>
定义引用页面 index.html
<div th:insert="~{footer :: copy}"></div>
通过 th:insert 和 ~{...}片段引用表达式 进行引入footer.html中定义的片段

通过id属性来声明片段
<body>
<div id="copy-section" >
    &copy; 2011 The Good Thymes Virtual Grocery
</div>
</body>

<div th:insert="~{footer :: #copy-section}"></div>

15、th:insert和th:replace(和th:include)之间的区别

th:insert 是最简单的:他会将使用th:insert的标签 和引用片段的内容都显示出来
th:replace 插入引用片段的标签和内容
th:include类似于th:insert,只插入此片段的内容。
<body>
<footer th:fragment="copy">
  &copy; 2011 The Good Thymes Virtual Grocery
</footer>
</body>

<div th:insert="footer2 :: copy"></div>
<div th:replace="footer2 :: copy"></div>
<div th:include="footer2:: copy"></div>

输出结果:
<div>
<footer>
  ? 2011 The Good Thymes Virtual Grocery
</footer>
</div>

<footer>
  ? 2011 The Good Thymes Virtual Grocery
</footer>

<div>
  ? 2011 The Good Thymes Virtual Grocery
</div>

16、带参数的引用片段

<body>
<div th:fragment="frag (onevar,twovar)">
    <p th:text="${onevar} + ' - ' + ${twovar}">...</p>
</div>
</body>

<body>
    <div th:insert="footer :: frag('a','b')"></div>
</body>

17、用th:remove="all" 删除模版片段

 <tr class="odd" th:remove="all">
    <td>Blue Lettuce</td>
    <td>9.55</td>
    <td>no</td>
    <td>
      <span>0</span> comment/s
    </td>
  </tr>

all:删除包含标记及其所有子标记。
body:不要删除包含标记,但删除其所有子标记。
tag:删除包含标记,但不删除其子项。
all-but-first:删除除第一个之外的所有包含标记的子项。
none: 没做什么。此值对于动态评估很有用。

18、#dates

处理日期数据 生成,转换,获取日期的具体天数 年数。
format操作
<span th:text="${#dates.format(date)}">4564546</span>
获取日期属性操作
<p th:text="${#dates.day(date)} "></p>
生成日期操作
<p th:text="${#dates.createNow()}"></p>
#numbers
处理数字数据的转换。包括:
对不够位数的数字进行补0(formatInteger )<p th:text="${#numbers.formatInteger('123',4)}"></p> 输出<p>0123</p>
设置千位分隔符(formatInteger)<p th:text="${#numbers.formatInteger('1000',2,'POINT')}"></p> 输出:<p>1.000</p>
精确小数点(formatDecimal )<p th:text="${#numbers.formatDecimal('10.123',3,2)}"></p> 输出:<p>010.12</p>
钱显示符号操作 <p th:text="${#numbers.formatCurrency('1000')}"></p> 输出:<p>¥1,000.00</p>
设置百分号(formatPercent )<p th:text="${#numbers.formatPercent('0.2',2, 4)}"></p> 输出:<p>20.0000%</p>
生成数组(sequence ):
<div th:each="num : ${#numbers.sequence(0,4)}" >
          <p th:text="${num}"></p>
</div>

输出:
<div><p>0</p></div>
<div><p>1</p></div> 
<div><p>2</p></div>
<div><p>3</p></div>
<div><p>4</p></div>

19、#strings

处理String的相关操作,包括:
字符串转换(toString)
检查字符串是否为空(isEmpty)
字符串是为空替换操作(defaultString)
检查字符串中是否包含某个字符串(contains containsIgnoreCase)
检查字符串是以片段开头还是结尾(startsWith endsWith)
截取(substring substringAfter)
替换(replace)
追加(prepend append)
变更大小写(toUpperCase toLowerCase)
拆分和组合字符串(arrayJoin arraySplit)
去空格(trim)
缩写文本(abbreviate)
字符串连接(concat)

20、#bools

判断对象是否为ture或者是否为false的操作。
数字 1 为 ture , 0 为 false;
"on" 为 true, "off" 为false;
"true" 为true, "false"为 false;

<p th:text="${#bools.isTrue(1)} "></p> 输出结果:<p>true</p>

21、#arrays

处理数组的相关操作的内置对象,包含:
转换数组 toStringArray toIntegerArray,
获取数组的长度(length ),
判断数组是否为空(isEmpty )
是否包含某个元素(contains)
是否包含一批元素(containsAll)

22、#lists

计算长度(size)
检查list是否为空(isEmpty)
检查元素是否包含在list中(contains,containsAll)
对给定list的副本排序(sort)

23、#sets

转换为Set(toSet)
计算长度(size)
检查set是否为空(isEmpty)
检查元素是否包含在set中 (contains,containsAll)

24、#maps

计算长度(size)
检查map是否为空(isEmpty)
检查映射中是否包含键或值(containsKey,containsAllKeys,containsValue)

25、#aggregates

用户处理集合或者数组的一些统计操作,包括:
求和(sum)
求平均值(avg)
处理包装类型或基本类型的数组或集合

 



热门相关:独步仙尘   腹黑大神:捡个萌宠带回家   婚婚欲醉:腹黑老公萌宠妻   黄金渔场   捡宝王