从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'是默认类型。