首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring MVC 數據綁定與表單標簽庫完整指南

     編輯:Java 相關知識

為什麼需要數據綁定?

HTTP 參數均為 String,手動轉換類型(如 Float.parseFloat)繁瑣且易出錯。Spring MVC 數據綁定自動將請求參數按類型轉換並填充到領域對象,Controller 只需直接接收對象:

啟用表單標簽庫

JSP 頂部聲明:

<%@taglib uri="https://www.springframework.org/tags/form" prefix="form" %>

核心標簽詳解

1. <form:form> - 表單容器與綁定入口

  • commandName / modelAttribute:指定綁定的 Model 屬性名(默認 command)。
  • method:支持 GET/POST/DELETE/PUT。非 GET/POST 時會生成隱藏域 _method,需配合 HiddenHttpMethodFilter。
<form:form commandName="book" action="book_update" method="post">
    <form:input path="title"/>
    <form:select path="category.id" items="${categories}" itemLabel="name" itemValue="id"/>
    <input type="submit" value="Update">
</form:form>

2. <form:input> - 文本輸入框

渲染 <input type="text">,path 綁定對象屬性,自動回顯值。

3. <form:select> + <form:option(s)> - 下拉選擇

  • items:數據源(List/Map/數組)。
  • itemLabel / itemValue:當項目為 POJO 時指定顯示文本與提交值的屬性。
  • Map 為數據源時:Key 為 value,Value 為 label。
<form:select path="favoriteBall" items="${ballMap}"/>
<!-- ballMap: {1:'籃球', 2:'足球'} -->

4. <form:checkbox> / <form:checkboxes> - 複選框

  • 綁定 boolean:true/false 決定勾選。
  • 綁定 Collection:值在集合中則勾選。
  • checkboxes 批量生成,需指定 items。

5. <form:radiobutton> / <form:radiobuttons> - 單選框

用法同 checkbox,但同組 path 相同,value 不同。

6. <form:errors> - 驗證錯誤顯示

<form:errors path="*"/>        <!-- 顯示所有錯誤 -->
<form:errors path="name"/>     <!-- 顯示 name 字段錯誤 -->

配合 @Valid + BindingResult 或 Validator 使用。

實戰場景:圖書編輯頁

  1. 列表頁點擊「編輯」跳轉 /book_edit/{id}。
  2. Controller 查詢圖書與分類列表放入 Model。
  3. 編輯頁使用 form:select 綁定分類,form:input 綁定標題/作者/ISBN。
  4. 提交到 /book_update,自動綁定到 Book 對象。

REST 風格表單提交(DELETE/PUT)

<form:form method="delete" modelAttribute="user">
    <input type="hidden" name="_method" value="delete"/> <!-- 手動寫法 -->
    ...
</form:form>

web.xml 必須配置 HiddenHttpMethodFilter(在 MultipartFilter 之後)。

總結

Spring MVC 表單標簽庫通過 path 實現雙向綁定:渲染時回顯對象值,提交時自動封裝。核心優勢在於「約定優於配置」,減少樣板代碼。掌握 form:form、input、select、checkbox(es)、radio(button)s、errors 六大標簽即可覆蓋 90% 表單場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved