<%@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 | 多個 checkbox | path, items, itemLabel, itemValue | 批量生成 |
| form:radiobutton | <input type="radio"> | path, value | 單個單選框 |
| form:radiobuttons | 多個 radio | path, items, itemLabel, itemValue, delimiter | 批量生成,支持分隔符 |
| form:select | <select> | path, items, itemLabel, itemValue, multiple | 下拉框 |
| form:option | <option> | value, label | 單個選項,支持綁定 |
| form:options | 多個 option | items, itemLabel, itemValue | 批量生成 option |
| form:errors | <span> (默認) | path, cssClass, element | 顯示驗證錯誤 |
<form:form commandName="user" method="delete" action="/user/1">
<!-- 生成隱藏域 _method=delete -->
<form:input path="name"/>
<input type="submit" value="刪除"/>
</form:form>
需配置 HiddenHttpMethodFilter(在 MultipartFilter 之後)。
boolean:true 勾選,false 不勾選。Collection:value 在集合中 → 勾選。Object:調用 toString() 與 value 比較。checkboxes:items 為展示列表,path 綁定的集合為已選值。| items 類型 | itemLabel | itemValue | 渲染規則 |
|---|---|---|---|
| List/Array of POJO | 屬性名 | 屬性名 | 分別取對應屬性作為 label/value |
| List/Array of 簡單類型 | 無需指定 | 無需指定 | 元素同時作為 label 和 value |
| Map | 無需指定 | 無需指定 | Key 為 value,Value 為 label |
select 指定 items 時,標簽體內容被忽略。options 標簽:<form:select path="country">
<option value="">請選擇</option>
<form:options items="${countryList}"/>
</form:select>form:option 支持數據綁定(自動勾選匹配值),普通 <option> 不支持。<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=" "/></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 三屬性在不同數據源下的語義,是高效開發的關鍵。