SpringMVC使用JSP处理表单(一)
每一个web应用都需要与表单进行交互,通过将输入字段与表单绑定,可以从用户那里获取数据。SpringMVC通过使用其自定义的JSP表单标签库提供了表单处理的方法。
表单标签库支持使用自定义标签创建视图,并提供了与模型类绑定的功能。所以,通过使用该框架的绑定功能,可以将浏览器提交的HTTP请求中的参数映射到模型。
表单标签提供了许多标签,从输入元素(如复选框、单选框、组合框等)到用来显示信息数据输出元素(比如标签和错误)。
- form
- input
- password
- hidden
- select
- option
- options
- radiobutton
- radiobuttons
- checkbox
- checkboxes
- textarea
- errors
- label
- button
1、配置表单标签库
若想在页面中使用标签库,需要进行一些配置。首先,应该将标签库的定义添加到页面;下面的示例使用mvc作为标签库的前缀:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="mvc" %>
表单标签库描述文件spring-form.tld位于spring-webmvc子项目META-INF文件夹中。如果将该项目作为一个依赖添加到当前项目中,则可以直接使用该项目。
对于标签库中的每一个标签定义,dynamic-attributes标签都被设置为true。这意味着在标签定义中不存在的特性仍然可以被定义和使用,因为它们将被作为传递特性而进行显示,所以可以在HTML输出看到在标签中定义的特性。
Spring MVC还提供了其他的标签库,以便处理消息的内部初始化,从主题中选择资源等。该标签库描述符文件名spring.tld,同样位于spring-webmvc子项目META-INF文件夹中。
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
接下来,首先学习输入标签的绑定功能。这也是Spring MVC中最重要的概念之一。
2、理解强大的绑定功能
Spring MVC在视图层和模型层之间提供了强大的绑定功能。用户通过视图发送数据,然后这些数据被自动绑定到模型。因为用户的每次交互都是Web上的一个HTTP请求,所以Spring MVC将请求参数与Command对象绑定,其中Command对象是一个POJO/Java Bean,其值由用户的输入填充。Command对象与Form对象和Form-Backing对象是同义的。
在视图层启用绑定的主要元素是标签中的path特性。path指向模型中定义的类属性。
<mvc:input path="name"/>
该例中,path指向一个类的name属性——比方说User。用户输入的值将会被自动设备到User类实例的name属性。如果一个类中并没有path所定义的属性,那么Spring MVC将抛出 org.springframework.beans.NotReadablePropertyException
,表明该属性不可读或者拥有一个无效的Getter/Setter方法。对大多数标签来说,path是一个必须的属性,因为必须定义它才能让标签工作。errors标签除外,它不需要path特性。
path只是知道特性,但并不知道Command对象本身。