1.通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值
的回显。
2.一般情况下,通过 GET 请求获取表单页面,而通过POST 请求提交表单页面,因此获取表单页面和提交表单页面的 URL 是
相同的
3.可以通过 modelAttribute 属性指定绑定的模型属性,若没有指定该属性,则默认从 request 域对象中读取command 的表单
bean,如果该属性值也不存在,则会发生错误。
4.SpringMVC • 提供了多个表单组件标签,如<form:input/>、<form:select/> 等,用以绑定表单字段的属性值,
它们的共有属性如下:
5.示例
5.1 导入标签库
5.2 使用标签
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ 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>
<!--
可以通过 modelAttribute 属性指定绑定的模型属性,若没有指定该属性,则默认从 request 域对象中读取
command 的表单 bean,如果该属性值也不存在,则会发生错误。
(也就是说,SpringMVC无论是不是第一次加载该页面,都需要进行页面的回显,这就需要在request域
对象中必须存在一个对应表单字段的bean对象,如果没有指定的话,会默认的去读取command 的表单 bean
如果也没有,则报错,这就要求,在请求该页面的时候,需要在request域对象中放入一个bean)
-->
<form:form action="emp" method="POST" modelAttribute="employee">
LastName: <form:input path="lastName"/>
<br>
Emali: <form:input path="email"/>
<br>
<%
Map<String,String> genders = new HashMap();
genders.put("1","Male");
genders.put("0","Female");
request.setAttribute("genders", genders);
%>
<!-- 此时不用再去写itemLabele和itemValue,会自定解析 -->
Gender: <form:radiobuttons path="gender" items="${genders}" />
<br>
<!-- 直接从域对象中获取,因为在get这个页面时,departments已经放入到 域对象中-->
Department: <form:select path="department" items="${departments}"
itemLabel="departmentName" itemValue="id"></form:select>
<br>
<input type="submit" value="Submit">
</form:form>
</body>
</html>