form:form是MVC提供的表单标签,还提供了相应的输入项标签。
使用需要导入:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
注意:实际开发action路径需要使用全局路径:${pageContext.request.contextPath}/@RequestMapping注解value请求值
一、使用SpringMVC的form标签
作用:可以快速开发表单,可以方便进行表单值回显
注意:表单标签需要和Bean类属性匹配,默认从 request 域对象中读取command类,可以使用modelAttribute属性指定
1、 form:form:表单标签
action:请求URL
method:请求方式
modelAttribute:指定绑定的Bean(默认从 request 域对象中读取command 的表单 bean,若command不存在报错)
2、form:input、form:select :输入项、下拉框
path:表单字段,对应 HTML 元素的 name 属性,支持级联属性 –
htmlEscape:是否对表单值的 HTML 特殊字符进行转换,默认值为 true
cssClass:表单组件对应的 CSS – 样式类名
cssErrorClass:表单组件的数据存在错误时,采取的 CSS – 样式
3、form:input、form:password、form:hidden、form:textarea •:对应 HTML 表单的 text、password、hidden、textarea标签
4、form:radiobutton:• 单选按钮标签,当表单 bean 对应的属性值和 value 值相等时,单选框被选中
5、form:radiobuttons:单选按钮组标签,用于构造多个单选 •框
items:设置显示的输入项集合,可以是一个 List、String[] 或 Map,常常配合EL表达式使用
path:表单字段,对应 HTML 元素的 name 属性,支持级联属性 –
itemValue:设置 输入项 的 value 值。若集合中存放的是Bean类型,可以知道Bean的具体某一属性
itemLabel:设置 输入项 的 label值,即显示在网页的值
delimiter:设置 分隔符
6、form:checkbox:• 复选框组件。用于构造单个复选框
7、form:checkboxs:用于构造多个复选框。使用方式同form:radiobuttons 标签
8、form:select:用于构造下拉框组件。使用方式同form:radiobuttons 标签
9、form:option:下拉框选项组件标签。使用方式同form:radiobuttons 标签
10、form:errors:显示表单组件或数据校验所对应的错误 •
<form:errors path= " *" /> :显示表单所有的错误 –
<form:errors path= " user*" /> :显示所有以 user 为前缀的属性对应 –的错误
<form:errors path= "username" /> :显示特定表单对象属性的错误
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" 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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<!-- 使用SpringMVC的form标签
作用:可以快速开发表单,可以方便进行表单值回显
注意:表单标签需要和Bean类属性匹配,默认从 request 域对象中读取command类,可以使用modelAttribute属性指定
form:form:表单标签
action:请求URL
method:请求方式
modelAttribute:指定绑定的Bean(默认从 request 域对象中读取command 的表单 bean,若command不存在报错)
form:input、form:select :输入项、下拉框
path:表单字段,对应 HTML 元素的 name 属性,支持级联属性 –
htmlEscape:是否对表单值的 HTML 特殊字符进行转换,默认值为 true
cssClass:表单组件对应的 CSS – 样式类名
cssErrorClass:表单组件的数据存在错误时,采取的 CSS – 样式
form:input、form:password、form:hidden、form:textarea •:对应 HTML 表单的 text、password、hidden、textarea标签
form:radiobutton:• 单选按钮标签,当表单 bean 对应的属性值和 value 值相等时,单选框被选中
form:radiobuttons:单选按钮组标签,用于构造多个单选 •框
items:设置显示的输入项集合,可以是一个 List、String[] 或 Map,常常配合EL表达式使用
path:表单字段,对应 HTML 元素的 name 属性,支持级联属性 –
itemValue:设置 输入项 的 value 值。若集合中存放的是Bean类型,可以知道Bean的具体某一属性
itemLabel:设置 输入项 的 label值,即显示在网页的值
delimiter:设置 分隔符
form:checkbox:• 复选框组件。用于构造单个复选框
form:checkboxs:用于构造多个复选框。使用方式同form:radiobuttons 标签
form:select:用于构造下拉框组件。使用方式同form:radiobuttons 标签
form:option:下拉框选项组件标签。使用方式同form:radiobuttons 标签
form:errors:显示表单组件或数据校验所对应的错误 •
<form:errors path= " *" /> :显示表单所有的错误 –
<form:errors path= " user*" /> :显示所有以 user 为前缀的属性对应 –的错误
<form:errors path= "username" /> :显示特定表单对象属性的错误
-->
<!-- 实际开发action路径需要使用全局路径:${pageContext.request.contextPath}/注解value请求值 -->
<form:form action="${pageContext.request.contextPath}/emp" method="post" modelAttribute="emp">
<c:if test="${emp.id == null }"><!-- 如果id为空,说明是添加操作 -->
LastName:<form:input path="lastName"/><br/>
</c:if>
<c:if test="${emp.id != null }"><!-- 如果id不为空,说明是编辑操作 -->
<form:hidden path="id"/> <!-- 使用隐藏标签将id作为隐藏输入项 -->
<input type="hidden" name="_method" value="PUT"/><!-- 将POST请求转为PUT请求,
不能使用form:hidden原因:form:form标签要求与modelAttribute属性的bean对象
一一对应,此时bean对象没有_method属性 -->
</c:if>
Email:<form:input path="email"/><br/>
<%
Map<String,String> map=new HashMap();
map.put("1", "Male");
map.put("0", "Female");
request.setAttribute("genders", map);
%>
Gender:<br/><form:radiobuttons path="gender" items="${genders }" delimiter="<br/>"/><br/>
Department:<form:select path="department.id" items="${departments}" itemLabel="departmentName" itemValue="id"></form:select><br/>
<input type="submit" value="Submit"/>
</form:form>
</body>
</html>