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

Spring MVC 表單標簽庫完整實戰手冊

     編輯:Java 相關知識

標簽庫聲明

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

核心標簽速查表

標簽渲染 HTML核心屬性說明
form:form<form>commandName/modelAttribute, method, action綁定模型對象,支持 REST method
form:input<input type="text">path, id, cssClass文本框,雙向綁定
form:password<input type="password">path密碼框,不回顯值
form:hidden<input type="hidden">path隱藏域
form:textarea<textarea>path, rows, cols多行文本
form:checkbox<input type="checkbox">path, value單個勾選框
form:checkboxes多個 checkboxpath, items, itemLabel, itemValue批量生成
form:radiobutton<input type="radio">path, value單個單選框
form:radiobuttons多個 radiopath, items, itemLabel, itemValue, delimiter批量生成,支持分隔符
form:select<select>path, items, itemLabel, itemValue, multiple下拉框
form:option<option>value, label單個選項,支持綁定
form:options多個 optionitems, itemLabel, itemValue批量生成 option
form:errors<span> (默認)path, cssClass, element顯示驗證錯誤

重點標簽深度用法

1. form:form - 綁定與 REST

<form:form commandName="user" method="delete" action="/user/1">
    <!-- 生成隱藏域 _method=delete -->
    <form:input path="name"/>
    <input type="submit" value="刪除"/>
</form:form>

需配置 HiddenHttpMethodFilter(在 MultipartFilter 之後)。

2. checkbox / checkboxes 綁定規則

  • 綁定 boolean:true 勾選,false 不勾選。
  • 綁定 Collection:value 在集合中 → 勾選。
  • 綁定 Object:調用 toString() 與 value 比較。
  • checkboxes:items 為展示列表,path 綁定的集合為已選值。

3. select / options 數據源類型

items 類型itemLabelitemValue渲染規則
List/Array of POJO屬性名屬性名分別取對應屬性作為 label/value
List/Array of 簡單類型無需指定無需指定元素同時作為 label 和 value
Map無需指定無需指定Key 為 value,Value 為 label

4. option vs options 選擇策略

  • select 指定 items 時,標簽體內容被忽略。
  • 需混合靜態選項(如「請選擇」)+ 動態列表 → 用 options 標簽:
    <form:select path="country">
        <option value="">請選擇</option>
        <form:options items="${countryList}"/>
    </form:select>
  • form:option 支持數據綁定(自動勾選匹配值),普通 <option> 不支持。

5. errors 驗證錯誤顯示

<form:form commandName="user">
    <form:input path="name"/>
    <form:errors path="name" cssClass="error"/> <!-- 字段錯誤 -->
    <form:errors path="*" cssClass="error"/>   <!-- 全局錯誤 -->
    <input type="submit"/>
</form:form>

配合 @Valid + BindingResult 或 Validator 使用。

實戰案例:用戶編輯頁

<form:form commandName="user" action="/user/update" method="post">
    <table>
        <tr><td>用戶名:</td><td><form:input path="username" readonly="true"/></td></tr>
        <tr><td>郵箱:</td><td><form:input path="email"/><form:errors path="email"/></td></tr>
        <tr><td>角色:</td><td><form:checkboxes path="roles" items="${allRoles}" itemLabel="name" itemValue="id"/></td></tr>
        <tr><td>性別:</td><td><form:radiobuttons path="gender" items="${genders}" delimiter="&nbsp;"/></td></tr>
        <tr><td>備註:</td><td><form:textarea path="remark" rows="4" cols="40"/></td></tr>
    </table>
    <input type="submit" value="保存"/>
</form:form>

總結

Spring MVC 表單標簽庫以 path 為核心實現雙向綁定,form:form 確定綁定對象與提交方式,input/select/checkbox/radio 覆蓋所有表單控件,errors 提供聲明式錯誤展示。掌握 items/itemLabel/itemValue 三屬性在不同數據源下的語義,是高效開發的關鍵。

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