1.Thymeleaf使用流程
Thymeleaf是一個Java模板引擎,支持html、xml、text、javascript、css、raw這幾種模型。
- 使用Thymeleaf首先需要引入命名空間
<html xmlns:th="http://www.thymeleaf.org">
2. 引入依賴
<!--引入thymeleaf模板引擎 注意需要3.0以上的版本否則失效-->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId>
</dependency>
3.Spring Boot的Thymeleaf模板引擎默認訪問src/main/resources/templates路徑的文件夾,可以自行修改另外Thymeleaf默認的頁面文件后綴是.html,需要通過Controller將數據傳遞到頁面中,讓頁面進行動態展示。
@Controller
public class HelloController {
@RequestMapping("/index")
public String index(Model model){
List<Object> list = new ArrayList<Object>();
list.add("1");
model.addAttribute("msg","hello,springboot");
model.addAttribute("msgs","<h1>hello,springboot</h1>");
model.addAttribute("list",list);
return "index";
}
}
4.基本的使用方法
- Thymeleaf通過”@{}”來引用web靜態資源,例如:
<script th:src="@{bootstrap/js/boostrap.min.js}"></script>
- 訪問model模型中的數據,例如訪問一個user對象的name屬性
<div th:text="${msg}"></div>
<div th:utext="${msgs}"></div> // utext 開啟自動拼接標簽
- 數據迭代,例如迭代一個userlist集合
<tr th:each="user : ${userlist}">
<td th:text="${user.name}">tyrone</td>
<td th:text="${user.age}">18</td>
</tr>
邏輯處理
所有的頁面模版都存在各種基礎邏輯處理,例如:判斷、循環處理操作。在 Thymeleaf 之中對于邏輯可以使用如下的一些運算符來完成,例如:and、or、關系比較(>、<、>=、<=、==、!=、lt、gt、le、ge、eq、ne)判斷是不是為空:null:
<span th:if="${name} != null">不為空</span>
<span th:if="${name1} == null">為空</span>
- 判斷是不是為空字符串: “”
<span th:if="${#strings.isEmpty(name1)}">空的</span>
- 判斷是否相同:
<span th:if="${name} eq 'jack'">相同于jack,</span>
<span th:if="${name} eq 'ywj'">相同于ywj,</span>
<span th:if="${name} ne 'jack'">不相同于jack,</span>
- 不存在設置默認值:
<span th:text="${name2} ?: '默認值'"></span>
- 是否包含(分大小寫):
<span th:if="${#strings.contains(name,'ez')}">包ez</span>
<span th:if="${#strings.contains(name,'y')}">包j</span>
${#strings.startsWith(name,'o')}
${#strings.endsWith(name, 'o')}
${#strings.indexOf(name,frag)}// 下標
${#strings.substring(name,3,5)}// 截取
${#strings.substringAfter(name,prefix)}// 從 prefix之后的一位開始截取到最后,比如 (ywj,y) = wj, 如果是(abccdefg,c) = cdefg//里面有2個c,取的是第一個c
${#strings.substringBefore(name,suffix)}// 同上,不過是往前截取
${#strings.replace(name,'las','ler')}// 替換
${#strings.prepend(str,prefix)}// 拼字字符串在str前面
${#strings.append(str,suffix)}// 和上面相反,接在后面
${#strings.toUpperCase(name)}
${#strings.toLowerCase(name)}
${#strings.trim(str)}
${#strings.length(str)}
${#strings.abbreviate(str,10)}// 我的理解是 str截取0-10位,后面的全部用…這個點代替,注意,最小是3位