1. 程式人生 > 其它 >Spring MVC表單標籤庫

Spring MVC表單標籤庫

我們在進行 Spring MVC 專案開發時,一般會使用 EL 表示式和 JSTL 標籤來完成頁面檢視的開發。其實 Spring 也有自己的一套表單標籤庫,通過 Spring 表單標籤,可以很容易地將模型資料中的命令物件繫結到 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