Thymeleaf each的多面向探究

Thymeleaf each是Thymeleaf模板中強大的迭代器,可以在模板中對集合數據進行循環,以便方便地渲染列表或表格等等。在本文中,我們將從多個角度來探究Thymeleaf each的用法和更多細節。

一、基礎用法

在Thymeleaf中,使用th:each屬性可以對集合進行迭代。


<ul>
  <li th:each="item : ${items}">
    <span th:text="${item}">Item name</span>
  </li>
</ul>

在上面的代碼中,我們使用了th:each屬性迭代了一個集合,其中變量item表示集合中的每一個元素。在循環體內,我們使用th:text屬性展示了每個元素的文本內容。

此外,Thymeleaf each還支持迭代時另外指定索引變量和循環狀態變量,如下所示:


<ul>
  <li th:each="item,iterStat : ${items}">
    <span th:text="${iterStat.index}">1</span>:<span th:text="${item}">Item name</span>
    <br/>
  </li>
</ul>

在上面的代碼中,我們使用th:each屬性同時指定了變量item和iterStat,其中iterStat是一個內置變量,表示當前的迭代狀態。我們可以使用iterStat訪問當前迭代的索引(iterStat.index)和是否是首(iterStat.first)或尾(iterStat.last)元素。

二、迭代器的嵌套

迭代器的嵌套是Thymeleaf each的常用技巧,可以用於渲染嵌套的列表或表格。例如,我們可以通過嵌套迭代器來渲染一個二維列表:


<table>
  <tr th:each="row : ${matrix}">
    <td th:each="cell : ${row}">
      <span th:text="${cell}">Cell content</span>
    </td>
  </tr>
</table>

在上面的代碼中,我們首先使用外部迭代器row來循環遍歷二維列表的每一行,然後在行內使用內部迭代器cell來循環遍歷當下行的每一個單元格。使用這種方式可以輕鬆渲染出一個簡單的二維表格。

三、局部變量的應用

在Thymeleaf中,我們還可以使用局部變量來臨時存儲循環體內的某一元素,並在後續的操作中使用。


<ul>
  <li th:each="item : ${items}">
    <span th:text="${item}">Item name</span>
    <span th:text="${#lists.last(items)?'':','}"></span> <!-- 如果不是最後一個元素,輸出逗號 -->
    <span th:with="nextItem=${#lists.next(items, item)}" th:text="${nextItem != null ? nextItem : ''}"></span> <!-- 展示下一個元素 -->
  </li>
</ul>

在上面的代碼中,我們使用Thymeleaf提供的#lists工具類來操作集合,通過lists.last判斷當前元素是否是最後一個元素,如果不是則輸出逗號。同時我們使用th:with創建了局部變量nextItem,通過#lists.next方法獲取當前元素之後的下一個元素,並且將其展示在模板中。

四、排序和過濾

在實際開發中,我們經常需要按照某種規則對集合元素進行排序或者過濾,Thymeleaf也提供了非常方便的處理方式。


<ul>
  <li th:each="item : ${#lists.sort(items)}">
    <span th:text="${item}">Item name</span>
  </li>
</ul>

<ul>
  <li th:each="item : ${#lists.filter(items, lambda(item): item != null)}">
    <span th:text="${item}">Item name</span>
  </li>
</ul>

在上面的代碼中,我們使用#lists工具類提供了兩種操作:#lists.sort用於對集合元素進行排序,而#lists.filter用於對集合元素進行過濾。注意到我們在#lists.filter中使用了一個lambda表達式來指定過濾規則,這樣可以非常方便地靈活地控制過濾規則。

五、小結

本文從基礎用法、迭代器的嵌套、局部變量、以及排序和過濾四個方面分別詳細介紹了Thymeleaf each的用法和技巧。通過對這些細節的掌握,我們可以更加高效地使用Thymeleaf each來渲染模板,提高應用的性能和靈活性。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/194080.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 09:42
下一篇 2024-12-02 09:42

相關推薦

  • Python定義兩個列表的多面探索

    Python是一種強大的編程語言,開放源代碼,易於學習和使用。通過Python語言,我們可以定義各種數據類型,如列表(list)。在Python中,列表(list)在處理數據方面起…

    編程 2025-04-29
  • Python中中括號里數字的多面

    本文將從多個方面對Python中中括號里數字做詳細的闡述,包括索引、切片、循環等,以及一些常見問題的解決方法。 一、索引操作 索引操作指的是通過中括號里的數字來訪問列表(list)…

    編程 2025-04-28
  • 使用Thymeleaf動態渲染下拉框

    本文將從下面幾個方面,詳細闡述如何使用Thymeleaf動態渲染下拉框: 一、Thymeleaf是什麼 Thymeleaf是一款Java模板引擎,可用於Web和非Web環境中的應用…

    編程 2025-04-27
  • 詳解Thymeleaf HTML

    一、模板引擎介紹 Thymeleaf是一個XML/HTML模板引擎,可用於Web和非Web環境中。它是Spring框架的一部分,但也可以在非Spring應用程序中使用。 Thyme…

    編程 2025-04-25
  • Python命令行執行的多面探秘

    一、基礎操作 Python是一種通用編程語言,可以在命令行中運行。做到這一點的最簡單方法是打開命令行窗口,鍵入Python,然後按Enter。這將帶您到Python提示符里。 $p…

    編程 2025-04-24
  • 科普 | np.tanh的多面向探究

    一、簡介 np.tanh是numpy庫中的一個函數,常被用來處理神經網絡中的激活函數,或者數學中的一些複雜計算。tanh即雙曲正切函數。 二、單變量情形 首先,我們看下單變量tan…

    編程 2025-04-18
  • CSS工具的多面分析

    一、CSS預處理器 CSS預處理器是建立在CSS基礎之上的語言,通過模塊化、變量、函數、繼承等特性簡化CSS編寫流程,例如: .btn { background: #3ed8a6;…

    編程 2025-04-12
  • Thymeleaf引入CSS

    一、引入外部CSS文件 在使用Thymeleaf框架時,與使用原始HTML標記一樣可以使用<link>元素,來引用一個外部CSS樣式表文件。 <head> …

    編程 2025-04-02
  • 深入理解PHP語言的多面性

    PHP語言作為一門開源的、面向對象的腳本語言,在網頁開發技術中有着廣泛的應用。本文將從多個方面對PHP語言進行詳細的闡述,包括語言特性、語法基礎、應用場景、性能優化以及安全性等方面…

    編程 2025-02-25
  • .astype的多面試闡述

    在Python和NumPy中,數據類型是編程過程中一個至關重要的概念。這就是為什麼.astype()經常用來轉換數據類型。.astype()是NumPy的一個函數。該函數返回一個將…

    編程 2025-02-15

發表回復

登錄後才能評論