thymeleaf 頁面引用實現動態佈局加載

thymeleaf  頁面引用實現動態佈局加載

        最近在學習使用 springboot+thymeleaf,在把基本的框架佈局功能實現了之後,發現了一些新的問題,就是所有頁面都是全加載,也就是說每個頁面都要實現佈局,真是費時又費力。介於之前的web開發經驗,一般都是上左右的佈局方式,對於一些小的信息化系統建設也是很方便的一說。

        通過這幾天不停的看資料(其實就是百度與Google),找實例,看視頻。終於解決了。現將這問題記錄於下,希望可以幫助有緣人。

使用 thymeleaf 佈局

一般業務處理系統都是上左右佈局的方式來實現,同是一些前臺的框架也是這樣佈局的,比如 bootstrap 等,大致如下:

當然也有的是菜單在標題欄處。本次以上圖爲例。之前如果用 jsp 實現上圖的佈局比較簡單,可通過 iframe 標籤來實現。thymeleaf 可通過 fragment 來實現。

fragment類似於JSP的tag,在html中文件中,可以將多個地方出現的元素塊用fragment包起來使用。

支持的th標籤有以下三種方式:

1、th:insert:保留自己的主標籤,保留th:fragment的主標籤。
2、th:replace:不要自己的主標籤,保留th:fragment的主標籤。
3、th:include:保留自己的主標籤,不要th:fragment的主標籤。(官方3.0後不推薦)

具體實現,直接看代碼吧。

父頁面:

  <div class="lyear-layout-container">
    
    <!--左側導航-->
    <div th:include="common/left::meau_left"></div>
    <!--End 左側導航-->
    
  </div>

子頁面:

<div th:fragment='meau_left'>
<h1>這是左側菜單</h1>
</div>

 結果:

  <div class="lyear-layout-container">
    
    <!--左側導航-->
    <div><h1>這是左側菜單</h1></div>
    <!--End 左側導航-->
    
  </div>

可以看到在頁面加載完成以後,父頁面加載了子頁面的內容。

總結:

1)、父頁面上用標籤 th:insert / th:replace / th:include 標示出需要加載的子頁面的位置

標籤參數格式:th:include="參數1::參數2"

第一個參數:子頁面的路徑/或html文件名稱(不含擴展名);

第二個參數:爲子頁面th:fragment的值。可以認爲這是一個唯一標識ID。

th:include="::參數2":只寫參數2,這裏指fragment名稱,則加載本頁面對應的fragment。(即父頁中的內容)
th:include="參數1::":只寫參數1,則加載整個頁面,整個html 標籤的內容

2)、子頁面上用標籤 th:fragment 標示出需要加載到的父頁面的內容(th:fragment 這個標籤內的代碼段)

 

發佈了57 篇原創文章 · 獲贊 17 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章