Spring MVC的表单标签为Java程序员提供了许多额外的支持。例如数据绑定,允许自动设置数据并从Java对象中检索数据。
从2.0版本开始,Spring提供了一组全面的数据绑定感知标记,用于在使用JSP和Spring Web MVC时处理表单元素。每个标记都支持其相应HTML标记对应的属性集,使标记熟悉且直观易用。标记生成的HTML符合HTML 4.01 / XHTML 1.0 标准。
Spring 表单标签
- form 标签
- input 标签
- checkbox 标签
- checkboxes 标签
- radiobutton 标签
- radiobuttons 标签
- password 标签
- select 标签
- option 标签
- options 标签
- textarea 标签
- hidden 标签
- errors 标签
- HTML5 标签集
在本文中我们会浏览所有这些表单标签,并查看每个标签的使用方式。
配置
表单标记库被捆绑在spring-webmvc.jar中,库描述符称为spring-form.tld。
如何引入Spring MVC 表单标签
要使用此库中的标记,请将以下指令添加到JSP页面的顶部:
form标签
此标记呈现HTML“form”标记,并公开内部标记的绑定路径以进行绑定。 它将命令对象放在PageContext中,以便内部标记可以访问命令对象。 此库中的所有其他标记都是表单标记的嵌套标记。
假设我们有一个名为User的域对象。它是一个JavaBean,具有firstName和lastName等属性。我们将它用作表单控制器的表单支持对象,它返回form.jsp。如下所示:
firstName和lastName值是从页面控制器放置在PageContext中的命令对象中检索的。加载表单时,Spring MVC将对user.getFirstName()和getLastName()(getter方法)进行分类。提交表单时,Spring MVC将调用user.setFirstName()和user.setLastName()方法。 生成的HTML看起来是这样:
input 标签
input 标记默认使用绑定值和type ='text'呈现HTML 'input'标记,举个例子:
生成的HTML代码如下所示:
checkbox 标签
此标记呈现带有“checkbox”类型的HTML “input”标记,例如:
生成的代码如下所示:
checkboxes 标签
此标记呈现多个带有“checkbox”类型的HTML “input”标记,示例如下:
radiobutton 标签
此标记呈现带有“radio”类型的HTML “input”标记,典型的使用模式将涉及绑定到同一属性但具有不同值的多个标记实例:
radiobuttons 标签
此标记呈现多个带有“radio”类型的HTML “input”标记,例如:
password 标签
此标记使用绑定值呈现带有“password”类型的HTML “input”标记,如下:
请注意,默认情况下,密码值不会显示。如果您确实需要显示密码值,请将“showPassword”属性的值设置为true,如下所示:
select 标签
此标记呈现HTML“select”元素,它支持数据绑定到所选选项以及使用嵌套选项和标记。示例如下:
选择一个Skill,则可能HTML代码如下:
option 标签
此标记呈现HTML “option”,它根据绑定值设置“selected”,如下:
如果选择了 “Gryffindor”,则相应的代码如下:
options 标签
此标记呈现HTML 'option'标记的列表,它根据绑定值设置“selected”属性,如下:
实际生成的HTML代码有可能是这样:
textarea 标签
此标记呈现HTML “textarea”,如下:
hidden 标签
此标记使用绑定值呈现类型为“hidden”的HTML“input”标记,如下:
errors 标签
此标记在HTML “span”标记中呈现字段错误,它可以访问控制器中创建的错误或由与控制器关联的任何验证器创建的错误。假设我们希望在提交表单后显示firstName和lastName字段的所有错误消息,有一个名为UserValidator的User类实例的验证器,如下:
form.jsp 代码如下:
如果firstName和lastName字段中有一个为空,那么提交后的是HTML是这样:
如果想显示给定页面的整个错误列表怎么办? 下面的示例显示errors标记还支持一些基本的通配符功能。path =“*”显示所有错误; path =“lastName”显示与lastName字段关联的所有错误; 仅显示对象错误。下面的示例将在页面顶部显示错误列表,然后是字段旁边的特定错误:
生成的HTML代码如下:
HTML5 标签
从Spring 3开始,Spring表单标记库允许输入动态属性,这意味着可以输入任何HTML5特定属性。在Spring 3.1中,表单输入标记支持输入“text”以外的type属性。这旨在允许呈现新的HTML5特定输入类型,例如“email”,“date”,“range”等。请注意,不需要输入type ='text',因为'text'是默认类型。