Spring MVC表單標籤庫
阿新 • • 發佈:2021-08-17
我們在進行 Spring MVC 專案開發時,一般會使用 EL 表示式和 JSTL 標籤來完成頁面檢視的開發。其實 Spring 也有自己的一套表單標籤庫,通過 Spring 表單標籤,可以很容易地將模型資料中的命令物件繫結到 HTML 表單元素中。下面我們就通過一個示例來演示該標籤庫的用法。
首先和 JSTL 標籤的使用方法相同,在使用 Spring 表單標籤之前,必須在 JSP 頁面開頭處宣告 taglib 指令,指令程式碼如下。
常用的 Spring 表單標籤如下表所示。
以上標籤基本都擁有以下屬性。
此外,表單元件標籤頁擁有 HTML 標籤的各種屬性,如 id、onclick 等,都可以根據需要靈活使用。
建立顯示頁面 showUser.jsp,程式碼如下。
新增使用者
顯示新增使用者資訊 from
http://c.biancheng.net/spring_mvc/form-tag.html
首先和 JSTL 標籤的使用方法相同,在使用 Spring 表單標籤之前,必須在 JSP 頁面開頭處宣告 taglib 指令,指令程式碼如下。
<%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form"%>
常用的 Spring 表單標籤如下表所示。
名稱 | 作用 |
---|---|
form | 渲染表單元素 |
input | 輸入框元件標籤,渲染 <input type="text"/> 元素 |
password | 密碼框元件標籤,渲染 <input type="password"/> 元素 |
hidden | 隱藏框元件標籤,渲染 <input type="hidden"/> 元素 |
textarea | 多行輸入框元件標籤,渲染 textarea 元素 |
checkbox | 複選框元件標籤,渲染一個 <input type="checkbox"/> 元素 |
checkboxes | 渲染多個 <input type="checkbox"/> 元素 |
radiobutton | 單選框元件標籤,渲染一個 <input type="radio"/> 元素 |
radiobuttons | 渲染多個 <input type="radio"/> 元素 |
select | 下拉列表元件標籤,渲染一個選擇元素 |
option | 渲染一個選項元素 |
options | 渲染多個選項元素 |
errors | 顯示錶單資料校驗所對應的錯誤資訊 |
- path:屬性路徑,表示表單物件屬性,如 userName、userCode 等。
- cssClass:表單元件對應的 CSS 樣式類名。
- cssErrorClass:當提交表單後報錯(服務端錯誤),採用的 CSS 樣式類。
- cssStyle:表單元件對應的 CSS 樣式。
- htmlEscape:繫結的表單屬性值是否要對 HTML 特殊字元進行轉換,預設為 true。
示例
下面以 <fm:form> 表單標籤為例,模仿新增使用者資訊。1. 建立實體類
建立實體類 user,程式碼如下。package net.biancheng.po; public class User { private String name; private Integer age; private Double height; /** 省略setter和getter方法*/ }
2. 建立頁面
建立 addUser.jsp,程式碼如下。<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>新增使用者</title> </head> <body> <fm:form method="post" modelAttribute="user" action="${pageContext.request.contextPath }/showuser"> 使用者名稱:<fm:input path="name"/> <br /> 年齡:<fm:input path="age"/> <br /> 身高:<fm:input path="height"/> <br /> <input type="submit" value="儲存" /> </fm:form> </body> </html><fm:form> 標籤的 modelAttribute 屬性用於指定繫結的模型屬性。預設從模型中嘗試取名為“command”的表單物件,若不存在此表單物件,將會報錯。所以一般情況下會指定 modelAttribute 屬性。
此外,表單元件標籤頁擁有 HTML 標籤的各種屬性,如 id、onclick 等,都可以根據需要靈活使用。
建立顯示頁面 showUser.jsp,程式碼如下。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>使用者資訊</title> </head> <body> 您建立的使用者資訊如下: <br /> <!-- 使用EL表示式取出model中的user資訊 --> 使用者名稱:${user.name } <br /> 年齡:${user.age } <br /> 身高:${user.height } </body> </html>
3. 建立控制器類
建立 UserController,程式碼如下。package net.biancheng.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import net.biancheng.po.User; @Controller public class UserController { @RequestMapping(value = "/addUser", method = RequestMethod.GET) public String add(@ModelAttribute("user") User user) { return "addUser"; } @RequestMapping(value = "/showuser", method = RequestMethod.POST) public String showuser(User user, HttpSession session, HttpServletRequest request) { return "showUser"; } }
4. 測試執行
訪問地址:http://localhost:8080/springmvcDemo2/addUser,執行結果如下圖所示。新增使用者
顯示新增使用者資訊 from
http://c.biancheng.net/spring_mvc/form-tag.html