Thymeleaf th:include、th:replace使用

最近做到頁面數據展示分頁的功能,由于每個模塊都需要分頁,所以每個頁面都需要將分頁的頁碼選擇內容重復的寫N遍,如下所示:

在這里插入圖片描述
重復的代碼帶來的就是Ctrl+C,Ctrl+V ,于是了解了一下thymeleaf的fragment加載語法以及th:include、th:replace的區別,得以解決。

首先在pom.xml引入thymeleaf的依賴

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

將上述的重復信息抽取出來存為pagination.html

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"><body><div class="panelBar" th:fragment="pagination"><!--以下為公共部分--><div class="pages"><span>顯示</span><select class="combox" name="numPerPage" οnchange="navTabPageBreak({numPerPage:this.value})"><option value="1" th:selected="${pages.numPerPage}==1">1</option><option value="3" th:selected="${pages.numPerPage}==3">3</option><option value="5" th:selected="${pages.numPerPage}==5">5</option><option value="10" th:selected="${pages.numPerPage}==10">10</option><option value="100" th:selected="${pages.numPerPage}==100">100</option><option value="150" th:selected="${pages.numPerPage}==150">150</option><option value="200" th:selected="${pages.numPerPage}==200">200</option><option value="250" th:selected="${pages.numPerPage}==250">250</option></select><span id="fleeceRecordCounts" th:text="'共有'+${pages.totalCount}+''"></span></div><div id="fleece_page" class="pagination"  th:attr="targetType=${pages.targetType},totalCount=${pages.totalCount},numPerPage=${pages.numPerPage},pageNumShown=${pages.pageNumShown},currentPage=${pages.currentPage}"></div></div></body>
</html>

在其他頁面進行引用該公共模塊時如下:

<div class="panelBar" th:replace="pagination::pagination"></div>

注意:第一個pagination為上述公共部分的文件名,第二個pagination為th:fragment的值。這樣便可以解決公共部分代碼的抽取。

fragment加載語法如下:

templatename::selector:”::”前面是模板文件名,后面是選擇器
::selector:只寫選擇器,這里指fragment名稱,則加載本頁面對應的fragment
templatename:只寫模板文件名,則加載整個頁面

  ================== fragment語法 ============================= <!--  語法說明  "::"前面是模板文件名,后面是選擇器 --><div th:include="template/footer::copy"></div><!-- 只寫選擇器,這里指fragment名稱,則加載本頁面對應的fragment --><div th:include="::#thispage"></div><!-- 只寫模板文件名,則加載整個頁面 --><div th:include="template/footer"></div>
================= 加載塊 ============================<span id="thispage">div in this page.
</span>

th:include 和 th:replace都是加載代碼塊內容,但是還是有所不同

th:include:加載模板的內容: 讀取加載節點的內容(不含節點名稱),替換div內容
th:replace:替換當前標簽為模板中的標簽,加載的節點會整個替換掉加載他的div
公共部分如下:

<!-- th:fragment 定義用于加載的塊 -->
<span th:fragment="pagination"> 
the public pagination
</span>

引用時如下:

================= th:include 和 th:replace============================
<!-- 加載模板的內容: 讀取加載節點的內容(不含節點名稱),替換<div>的內容 -->
<div th:include="pagination::pagination">1</div>
<!-- 替換當前標簽為模板中的標簽: 加載的節點會整個替換掉加載他的<div>  -->
<div th:replace="pagination::pagination">2</div>

結果如下:

<!-- 加載模板的內容: 讀取加載節點的內容(不含節點名稱),替換<div>的內容 -->
<div> the public pagination</div>
<!-- 替換當前標簽為模板中的標簽: 加載的節點會整個替換掉加載他的<div>  -->
<span> the public pagination</span>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250006.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250006.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250006.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(OS X) OpenCV架構x86_64的未定義符號:錯誤(OpenCV Undefined symbols for architecture x86_64: error)...

原地址&#xff1a;http://www.it1352.com/474798.html 錯誤提示如下&#xff1a; Undefined symbols for architecture x86_64:"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:_main in test-41a30e.o"cv::namedWindow(std::__1::basic…

【算法】大根堆

const swap (arr, i, j) > {const tmp arr[i];arr[i] arr[j];arr[j] tmp; } const heapInsert (arr , i) > { // 插入大根堆的插入算法while(arr[i] > arr[Math.floor((i - 1) / 2]) {swap(arr, i, Math.floor((i - 1) / 2);i Math.floor((i - 1) / 2; } } cons…

[CF1082E] Increasing Frequency

Description 給定一個長度為 \(n\) 的數列 \(a\) &#xff0c;你可以任意選擇一個區間 \([l,r]\) &#xff0c;并給區間每個數加上一個整數 \(k\) &#xff0c;求這樣一次操作之后數列中最多有多少個數等于 \(c\)。 \(n,c,a_i\leq 10^5\) Solution 假設當前選擇區間的右端點為 …

Thymeleaf select 使用 和多select 級聯選擇

1.使用select 并且回綁數據; 頁面&#xff1a; 狀態&#xff1a; <select name"status" th:field"*{status}" id"idstatus" class"input-select" th:value"*{status}"> <option value"">--請選擇-…

Switch語句的參數是什么類型的?

在Java5以前&#xff0c;switch(expr)中&#xff0c;exper只能是byte&#xff0c;short&#xff0c;char&#xff0c;int類型。 從Java5開始&#xff0c;java中引入了枚舉類型&#xff0c;即enum類型。 從Java7開始&#xff0c;exper還可以是String類型。 switch關鍵字對于多數…

【LOJ】#2184. 「SDOI2015」星際戰爭

題解 直接二分然后建圖跑網絡流看看是否合法即可 就是源點向每個激光武器連一條二分到的時間激光武器每秒攻擊值的邊 每個激光武器向能攻擊的裝甲連一條邊 每個裝甲向匯點連一條裝甲值的邊 代碼 #include <bits/stdc.h> #define fi first #define se second #define pii …

表達式符號

Thymeleaf對于變量的操作主要有$*#三種方式&#xff1a; 變量表達式&#xff1a; ${…}&#xff0c;是獲取容器上下文變量的值.選擇變量表達式&#xff1a; *{…}&#xff0c;獲取指定的對象中的變量值。如果是單獨的對象&#xff0c;則等價于${}。消息表達式&#xff1a; #{……

Java學習的快速入門:10行代碼學JQuery

生活在快速發展時代的我們&#xff0c;如果不提速可能稍不留神就被時代淘汰了。快節奏的時代成就了快餐&#xff0c;亦成就了速成教育。尤其是身處互聯網行業的我們&#xff0c;更新換代的速度更是迅速&#xff0c;快速掌握一門技術已經成為潮流趨勢。怎樣才能快速入門學習java…

項目管理

項目先后銜接的各個階段的全體被稱為項目管理流程。項目管理流程對于一個項目能否高效的執行起到事半功倍的效果。接下來我會利用36張的ppt&#xff08;當然了這里我只用部分圖片展示要不然就太多圖片了&#xff09;&#xff0c;介紹項目管理的整體流程。 1.項目管理的五大過程…

docker——三劍客之Docker Machine

Docker Machine是Docker官方三劍客項目之一&#xff0c;負責使用Docker的第一步&#xff0c;在多種平臺上快速安裝Docker環境。它支持多種平臺&#xff0c;讓用戶在很短時間內搭建一套Docker主機集群。Machine項目是Docker官方的開源項目&#xff0c;負責實現對Docker主機本身進…

egret:什么是臟矩形

臟矩形是2D圖形性能優化一個重要的概念。Egret2.5開始臟矩形完全可以由引擎自動計算&#xff0c;即大名鼎鼎的"自動臟矩形"。 簡單說臟矩形&#xff0c;就是畫面刷新時&#xff0c;產生變化而需要重繪的舞臺局部區域。 什么叫臟&#xff0c;即什么情況下會弄臟&#…

軟件項目管理(一)

首先軟件項目管理&#xff0c;什么是項目&#xff1f;什么是軟件項目&#xff1f; 項目是唯一的&#xff0c;臨時的&#xff0c;即在一定的時間內完成。 具體定義&#xff1a;項目是為了創造一個唯一的產品或提供一個唯一的服務而進行的臨時性的努力。 項目的特征&#xff1a; …

strace參數

strace參數 strace參數 -c 統計每一系統調用的所執行的時間,次數和出錯的次數等. -d 輸出strace關于標準錯誤的調試信息. -f 跟蹤由fork調用所產生的子進程. -ff 如果提供-o filename,則所有進程的跟蹤結果輸出到相應的filename.pid中,pid是各進程的進程號. -F 嘗試跟蹤vfork調…

軟件項目管理(二)

根據上次的路線圖 從項目初始開始&#xff1a;包括項目確立和生存期 項目確立分成 項目立項、項目招投標、項目授權 項目立項&#xff1a;確定項目的目標、時間、資源、資金&#xff0c;關鍵在于得到項目發起人的認可 一個軟件項目的立項開始于軟件項目的啟動&#xff0c;只…

centos6.5和centos7.5統一字符集為zh_CN.UTF-8解決系統和MySQL數據庫亂碼問題

linux的服務器需要做的操作 centos6.5下&#xff1a; 修改默認字符集為 zh_CN.UTF-8&#xff0c;如果沒有中文語言包可能需要安裝中文語言包支持 [rootmeinv01 ~]# yum groupinstall chinese-support [rootmeinv01 ~]# cat /etc/sysconfig/i18n #<修改此配置文件為如下 L…

軟件項目管理(三)

上次講完了項目初始部分&#xff0c;包括立項、招投標、授權 在進入第二部分&#xff0c;項目計劃 前我們要先了解軟件的需求以及任務的分解 軟件需求管理 軟件需求定義&#xff1a;用戶對軟件功能和性能的要求 軟件需求管理過程&#xff1a;需求獲取、需求分析、需求規格…

Winform-圖片上傳

1.界面上拖個.pictureBox(pictureBox1) //上傳點擊按鈕 private void button1_Click(object sender, EventArgs e) { OpenFileDialog fileDialog new OpenFileDialog(); DialogResult result fileDialog.ShowDialog(); if (result DialogResult.OK) { this.pictureBox1.Imag…

moment.js 快捷查詢

格式化日期 當前時間&#xff1a;moment().format(YYYY-MM-DD HH:mm:ss); //2014-09-24 23:36:09 今天是星期幾&#xff1a;moment().format(d); //3 轉換當前時間的Unix時間戳&#xff1a;moment().format(X); 相對時間 20120901相對當前日期是2年前moment("20120901&quo…

My97 DatePicker獲取自定義日期的前一天

1.控件&#xff0c;獲取第一個input中的時間&#xff0c;再將這個時間的前一天賦值給第二個input <input type"text" class"form-control input-sm" id"recordTime" style"width:145px" οnclick"WdatePicker({onpicked:chang…

Underscore.js 源碼學習筆記(下)

上接 Underscore.js 源碼學習筆記&#xff08;上&#xff09; 756 行開始 函數部分。 var executeBound function(sourceFunc, boundFunc, context, callingContext, args) {if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);var self …