thymeleaf實(shí)現(xiàn)th:each雙重多重嵌套功能
博主最近在做一個個人的博客網(wǎng)站,準(zhǔn)備用 thymeleaf 實(shí)現(xiàn)一個動態(tài)加載一二級文章分類的功能,效果如下:

后臺實(shí)體類代碼如下:
/**
* @author 曲健磊
* @date 2019-08-22 20:28:18
* @description 一級分類實(shí)體類
*/
public class CateVO {
/**
* 一級分類id
*/
private Integer cate1Id;
/**
* 一級分類名稱
*/
private String cate1Name;
/**
* 該一級分類下的二級分類列表
*/
private List<Cate2> cate2List;
// 省略set get方法
}
/**
* @author 曲健磊
* @date 2019-08-15 20:18:44
* @description 二級分類實(shí)體類
*/
public class Cate2 {
/**
* 二級分類id
*/
private Integer id;
/**
* 二級分類名稱
*/
private String cateName;
}
Controller 層的代碼如下:
@Controller
@RequestMapping("/")
public class IndexController {
@Autowired
private CateService cateService;
/**
* 我配置的項目端口號是:80
* 所以,當(dāng)用戶在瀏覽器上輸入:127.0.0.1:80 或 127.0.0.1 時請求會進(jìn)到這個方法里
*/
@GetMapping("/")
public String defaultWebPage(HttpServletRequest request){
// 1.模擬獲取所有的一級分類以及每個一級分類下的所有二級分類
List<CateVO> allCateList = new ArrayList<CateVO>();
// 1.1.一級分類
CateVO cateVO1 = new CateVO();
cateVO1.setCate1Id(1);
cateVO1.setCate1Name("大數(shù)據(jù)");
// 1.2.該一級分類下的二級分類列表
List<Cate2> cate2_1List = new ArrayList<Cate2>();
// 1.2.1.第一個二級分類
Cate2 cate2_1_1 = new Cate2();
cate2_1_1.setId(1);
cate2_1_1.setCateName("Hadoop");
// 1.2.2.第二個二級分類
Cate2 cate2_1_2 = new Cate2();
cate2_1_2.setId(1);
cate2_1_2.setCateName("Spark");
cate2_1List.add(cate2_1_1);
cate2_1List.add(cate2_1_2);
// 1.3.把所有的二級分類添加到該一級分類下
cateVO1.setCate2List(cate2_1List);
// 1.4.把所有的一級分類放入列表中,多個的話以此類推(通常都是直接查數(shù)據(jù)庫的)
allCateList.add(cateVO1);
// 2.將一級分類列表放入 request 域中。
request.setAttribute("cateList", allCateList);
// 3.返回 index.html 頁面
return "index";
}
}
前臺 html 的代碼如下(簡化):
<!DOCTYPE HTML>
<!-- thymeleaf的引用 -->
<html xmlns:th="http://www.thymeleaf.org">
<head>
<!-- 引用的css,js -->
</head>
<!-- 頁面主體 -->
<body>
<ul>
<!-- 這一級是一級的分類 -->
<li th:each="cate1:${cateList}"><a th:text="${cate1.cate1Name}"></a>
<!-- 這是一級下的二級分類列表 -->
<ul>
<li th:each="cate2:${cate1.cate2List}"><a th:text="${cate2.cateName}"></a></li>
</ul>
</li>
</ul>
</body>
</html>
博主直接用 java 代碼解釋一下上面的 th:each 那里是什么意思吧:
// cateList 就是我們在 Controller 中向 request 域中設(shè)置的那個屬性
for (CateVO cate1 : cateList) {
System.out.println(cate1.cate1Name);
// cate1這個變量現(xiàn)在就存在于request域中,我們可以直接調(diào)用它的屬性和方法
for (Cate2 cate2 : cate1.cate2List) {
System.out.println(cate2.cateName);
// 依次類推,如果有三級分類這里繼續(xù)調(diào)用cate2的屬性或方法就可以
}
}
cate1:${cateList} 這個寫法是固定的格式,冒號前的 cate1 是新定義的臨時變量,cateList 是我們在 Controller 中放入 request 域中的變量;在一級分類循環(huán)里面,我們是可以直接獲取剛才定義的臨時變量:cate1 的。
所以,我們可以繼續(xù) th:each 遍歷該一級分類的二級分類列表,三級四級以此類推。
總結(jié)
以上所述是小編給大家介紹的thymeleaf實(shí)現(xiàn)th:each雙重多重嵌套功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
- springboot+thymeleaf+druid+mybatis 多模塊實(shí)現(xiàn)用戶登錄功能
- Spring boot+mybatis+thymeleaf 實(shí)現(xiàn)登錄注冊增刪改查功能的示例代碼
- Spring boot2+jpa+thymeleaf實(shí)現(xiàn)增刪改查
- Thymeleaf對象的使用之基本對象實(shí)例解析
- SpringBoot使用thymeleaf模板過程解析
- Spring Boot Thymeleaf實(shí)現(xiàn)國際化的方法詳解
- SpringBoot引入Thymeleaf的實(shí)現(xiàn)方法
- Thymeleaf中th:each及th:if使用方法解析
相關(guān)文章
阿里巴巴開源 Dragonwell JDK 最新版本 8.1.1-GA 發(fā)布
距離 Dragonwell JDK 第一個正式版本 8.0.0-GA 發(fā)布已經(jīng)過去 3 個月了,項目在 Github 上的 stars 繼續(xù)攀升達(dá)到了 1900。今天我們帶來了最新版本 8.1.1-GA 的發(fā)布,包含了全新的特性和更新,需要的朋友可以參考下2019-10-10
DeepSeek本機(jī)部署詳細(xì)步驟(基于Ollama和Docker管理)
這篇文章主要介紹了如何利用ollama和docker在本機(jī)部署DeepSeek大語言模型,提供了一種高效、便捷且穩(wěn)定的部署方式,步驟包括硬件和軟件安裝、模型獲取、容器創(chuàng)建和啟動等,通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02
IDEA取消git對項目的版本控制的實(shí)現(xiàn)
取消Git版本控制可以簡化代碼管理流程、減少學(xué)習(xí)成本、簡化代碼庫管理、提高代碼安全性、加快構(gòu)建和部署速度,本文主要介紹了IDEA取消git對項目的版本控制的實(shí)現(xiàn),感興趣的可以了解一下2023-11-11
MobaXterm詳細(xì)使用圖文教程(MobaXterm連接Linux服務(wù)器)
這篇文章主要介紹了MobaXterm詳細(xì)使用教程,介紹一下如何設(shè)置并用MobaXterm來連接Linux服務(wù)器,本文介紹了三種連接方式:SSH,F(xiàn)TP,serial,以及幾個有用的設(shè)置和命令,需要的朋友可以參考下2023-05-05
matlab讀取串口數(shù)據(jù)并顯示曲線的實(shí)現(xiàn)示例
這篇文章主要介紹了matlab讀取串口數(shù)據(jù)并顯示曲線的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

