1. 引言
Thymeleaf 是 Java 生態系統中流行最廣泛的模板引擎之一。它允許我們利用 Java 應用程序中的數據,輕鬆創建動態 HTML 頁面。
在本教程中,我們將探討使用隱藏輸入字段與 Spring 和 Thymeleaf 結合使用的多種方法。
2. Thymeleaf 與 HTML 表單
在探討使用隱藏字段之前,我們先退後一步,看看 Thymeleaf 如何與 HTML 表單進行交互。
最常見的用法是使用一個 HTML 表單,該表單直接映射到我們應用程序中的 DTO。
例如,假設我們正在編寫一個博客應用程序,並且有一個 DTO 來表示單個博客帖子:
class BlogDTO {
long id;
String title;
String body;
String category;
String author;
Date publishedDate;
}我們可以使用 HTML 表單來使用 Thymeleaf 和 Java 創建此 DTO 的新實例:
<form action="#" method="post" th:action="@{/blog}" th:object="${blog}">
<input type="text" th:field="*{title}">
<input type="text" th:field="*{category}">
<textarea th:field="*{body}"></textarea>
</form>請注意,我們的博客文章 DTO 中的字段映射到 HTML 表單中的單個輸入。這在大多數情況下都有效,但哪些字段不應允許進行編輯?這正是隱藏輸入可以發揮作用的地方。
例如,每篇博客文章都具有唯一的 ID 字段,用户不應被允許編輯它。
3. 使用 th:field 屬性
使用 th:field 屬性是分配到隱藏輸入字段值的最快方法:
<input type="hidden" th:field="*{blogId}" id="blogId">這是最簡單的方法,因為我們不需要指定 value 屬性,但可能在較舊版本的 Thymeleaf 中不受支持。
4. 使用 屬性
使用 Thymeleaf 隱藏輸入字段的另一種方法是使用內置的 屬性:
<input type="hidden" th:value="${blog.id}" th:attr="name='blogId'"/>在這種情況下,我們需要使用 id 字段,並使用 blog 對象。
5. 使用 name 屬性
另一種更簡潔的方法是使用標準的 HTML name 屬性:
<input type="hidden" th:value="${blog.id}" name="blogId" />它完全依賴於標準 HTML 屬性。在這種情況下,我們還需要使用 id 字段,並藉助 blog 對象進行引用。
6. 結論
在本教程中,我們探討了如何使用隱藏輸入字段與 Thymeleaf 結合使用的方法。 這種技術對於將 DTO 中的只讀字段傳遞到 HTML 表單中非常有用。