我們做好了登錄頁,那設計一個場景吧,比如我們登錄后跳轉到公司主頁,想從公司主頁再跳轉到員工列表頁;
這樣的場景我們該如何實現,首先要知道一些基礎知識,就是SpringBoot的一些關於請求的架構知識:
功能 | 請求URI | 請求方式 |
查詢所有員工 | emps | GET |
查詢某個員工 | emp/{id} | GET |
跳轉到添加頁 | emp | GET |
添加員工 | emp | POST |
跳轉到修改頁 | emp | GET |
修改員工信息 | emp{id} | PUT |
刪除員工 | emp{id} | DELETE |
其實,這些請求在我們做登錄頁的時候已經有接觸過了,那么我們來看后邊如何應用。
頁面跳轉和編寫替換
我們從主頁中已經寫過了如何從主頁跳轉到列表頁,那么我們現在要做的就是,在列表頁中展示正確的數據。
1. 首先,添加超鏈接,也就是點擊跳轉后的頁面,同樣適用thymeleaf模板,引入模板和屬性
xmlns:th="http://www.thymeleaf.org"
來看沒有修改前的跳轉頁面的幾個地方:
a. 頭部的名字不是我們首頁的admin;
b. 側邊欄中我們修改的員工管理的中文不見了;
c. 列表數據目前OK;
針對以上的問題,我要做的就是替換頭部和側邊欄,但是讓我們按照首頁一樣再寫一遍會很麻煩,所以Thymeleaf給了我們一些可以替換的功能;
看官方文檔如何寫的:
效果圖:
兩種替換公式:
~{templatename: : selector} :~{模板名::選擇器}
~{templatename: : fragmentname} :~{模板名::片段名}
三個替換屬性:
th:insert :將聲明的片段,整個插入到元素中
th:replace :將聲明引入的元素替換為公告元素
th:includ :將被引入的元素內容包含在標簽中
1. 那,在我們的html中應用一下,就是這么寫的:(在我們需要替換的頂部欄,也就是用戶名那里,把這個元素后邊加上這個th的屬性)
<nav class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0" th:fragment="topbar">
2. 然后,在我們的list.htm頁中加入這樣的一段即可實現:(注意,我這里沒有寫~{},其實是可以的;一般只有在行內才需要寫,比如[[~{}]]或者[(~{})])
<div th:replace="dashboard::topbar"></div>
實現效果如圖:*(看,名字已經替換成了首頁我們登錄時的用戶名)
3. 接下來,替換側邊欄,同樣的方法,這會我使用選擇器的那個公式:(給想要替換的側邊欄,添加一個id)
<nav class="col-md-2 d-none d-md-block bg-light sidebar" id="sidebar">
4. 再到list.html中去引入這個id:
<div th:replace="~{dashboard::#sidebar}"></div>
看效果:(首頁的中文頁替換過來了),是不是這樣寫頁面就簡單了很多~