知識庫 / Spring / Spring Web RSS 訂閱

使用隱藏輸入與 Spring 和 Thymeleaf

Spring Web
HongKong
13
12:47 PM · Dec 06 ,2025

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 表單中非常有用。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.