一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 編程技術 - thymeleaf實現th:each雙重多重嵌套功能

thymeleaf實現th:each雙重多重嵌套功能

2020-09-16 17:13曲健磊 編程技術

今天給大家分享一個使用 thymeleaf 實現一個動態加載一二級文章分類的功能,本文通過代碼講解的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧

博主最近在做一個個人的博客網站,準備用 thymeleaf 實現一個動態加載一二級文章分類的功能,效果如下:

thymeleaf實現th:each雙重多重嵌套功能

后臺實體類代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
 * @author 曲健磊
 * @date 2019-08-22 20:28:18
 * @description 一級分類實體類
 */
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 二級分類實體類
 */
public class Cate2 {
 /**
   * 二級分類id
   */
  private Integer id;
 /**
   * 二級分類名稱
   */
  private String cateName;
}

Controller 層的代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@Controller
@RequestMapping("/")
public class IndexController {
  @Autowired
  private CateService cateService;
 /**
 * 我配置的項目端口號是:80
 * 所以,當用戶在瀏覽器上輸入:127.0.0.1:80 或 127.0.0.1 時請求會進到這個方法里
 */
  @GetMapping("/")
  public String defaultWebPage(HttpServletRequest request){
    // 1.模擬獲取所有的一級分類以及每個一級分類下的所有二級分類
 List<CateVO> allCateList = new ArrayList<CateVO>();
 // 1.1.一級分類
 CateVO cateVO1 = new CateVO();
 cateVO1.setCate1Id(1);
 cateVO1.setCate1Name("大數據");
 
 // 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.把所有的一級分類放入列表中,多個的話以此類推(通常都是直接查數據庫的)
 allCateList.add(cateVO1);
 // 2.將一級分類列表放入 request 域中。
    request.setAttribute("cateList", allCateList);
    // 3.返回 index.html 頁面
    return "index";
  }
}

前臺 html 的代碼如下(簡化):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!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 那里是什么意思吧:

?
1
2
3
4
5
6
7
8
9
10
11
// cateList 就是我們在 Controller 中向 request 域中設置的那個屬性
for (CateVO cate1 : cateList) {
 System.out.println(cate1.cate1Name);
 
 // cate1這個變量現在就存在于request域中,我們可以直接調用它的屬性和方法
 for (Cate2 cate2 : cate1.cate2List) {
 System.out.println(cate2.cateName);
 
 // 依次類推,如果有三級分類這里繼續調用cate2的屬性或方法就可以
 }
}

cate1:${cateList} 這個寫法是固定的格式,冒號前的 cate1 是新定義的臨時變量,cateList 是我們在 Controller 中放入 request 域中的變量;在一級分類循環里面,我們是可以直接獲取剛才定義的臨時變量:cate1 的。

所以,我們可以繼續 th:each 遍歷該一級分類的二級分類列表,三級四級以此類推。

總結

以上所述是小編給大家介紹的thymeleaf實現th:each雙重多重嵌套功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

原文鏈接:https://blog.csdn.net/a909301740/article/details/100031624

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产99久久精品一区二区 | 国产欧美日韩不卡一区二区三区 | 亚洲国产在线综合018 | 国产精品天天影视久久综合网 | 欧美在线看片a免费观看 | 国产亚洲综合成人91精品 | 韩国三级在线高速影院 | 人成网站在线观看 | 能免费观看的韩剧 | 向日葵视频app下载18岁以下勿看 | 四虎在线视频免费观看视频 | 湿好紧太硬了我太爽了 | 青青青在线观看国产精品 | 日韩 欧美 国产 亚洲 中文 | a一级毛片录像带 录像片 | 91免费精品国自产拍在线不卡 | 色吊丝每日永久访问网站 | 草草视频免费在线观看 | 办公室恋情在线 | 国产小视频免费看 | 日韩精品特黄毛片免费看 | 国产毛片一级aaaaa片 | ckinese中国男同gay男男 | 亚洲精品在线免费观看视频 | 欧美精品久久一区二区三区 | 国产精品成人网红女主播 | 性美国人xxxxx18 | 亚洲天天综合网 | 人配人种视频xxxx | 日韩国产成人资源精品视频 | 被教官揉了一晚上的奶小说 | 国产日韩欧美一区 | 亚洲国产精品成人午夜在线观看 | 呜呜别塞了啊抽插 | 日韩在线二区 | 亚洲精品卡1卡二卡3卡四卡 | 亚洲欧美日韩特级毛片 | 三体动漫在线观看免费完整版2022 | 成年人视频免费在线观看 | 亚洲成人国产精品 | 欧美精品一区二区三区久久 |