spring mvc -spring的表单标签库

上传人:第*** 文档编号:30582038 上传时间:2018-01-30 格式:DOC 页数:12 大小:92.50KB
返回 下载 相关 举报
spring mvc -spring的表单标签库_第1页
第1页 / 共12页
spring mvc -spring的表单标签库_第2页
第2页 / 共12页
spring mvc -spring的表单标签库_第3页
第3页 / 共12页
spring mvc -spring的表单标签库_第4页
第4页 / 共12页
spring mvc -spring的表单标签库_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《spring mvc -spring的表单标签库》由会员分享,可在线阅读,更多相关《spring mvc -spring的表单标签库(12页珍藏版)》请在金锄头文库上搜索。

1、Spring Framework 开发参考:13.9. 使用 Spring 的表单标签库从 2.0 版本开始,如果使用 JSP 和 Spring Web MVC 的话,Spring 提供了一套支持数据绑定的标签集合,用于处理表单元素。 每个标签所支持的属性集合和与其对应的 HTML 标签相同,这就让这些标签看起来很熟悉,而且用起来很直观。 由这些标签库生成的 HTML 页面符合 HTML 4.01/XHTML 1.0 标准。 与其它表单/输入标签库不同,Spring 的表单标签库与 Spring Web MVC 集成在一起, 使标签可以使用命令对象(command object)和你的控制器处

2、理的参考数据( reference data)。 就像下面这些例子展示的一样,表单标签让 JSP 更易于开发、阅读和维护。 让我们进入表单标签的领域,并通过一个例子研究每个标签如何使用。 当某些标签需要更进一步的解释时,我们已经把所生成的 HTML 片段也一起列了进来。 13.9.1. 配置Spring 的表单标签库包含在 spring.jar 中。 这个库的描述符(descriptor)叫做 spring-form.tld。 要使用这个库中的标签,在 JSP 页面的开头加入下面声明:在上面的声明中,form 就是为想要使用的这个库中的标签所确定的标签命名前缀。13.9.2. form 标签这

3、个标签会生成一个 HTML 的“form”标签,同时为内部标签的绑定暴露了一个绑定路径(binding path)。 它把命令对象(command object)放在 PageContext 中,这样内部的标签就可以访问这个命令对象了。 这个库中的其他标签都是 form 标签的嵌套标签 。 假设我们有一个叫做 User 的领域对象,它是一个 JavaBean, 拥有诸如 firstName 和 lastName 这样的属性。我们将把它当作返回 form.jsp 的表单控制器的表单支持对象(form backing object)。 下面是一个 form.jsp可能的样子的例子: First N

4、ame:Last Name: 上面 firstName 和 lastName 的值是从由页面控制器放置在 PageContext 中的命令对象中得到的。 请继续读下去来看几个关于如何使用 form 标签的内部标签的例子。 生成的 HTML 看起来就是一个标准的 form:First Name:Last Name:上面的 JSP 有一个预设前提,就是表单支持对象( form backing)的变量名是“ command”。 如果你将这个表单支持对象用其他名称加以定义(这可算是一种最佳实践),你就可以将这个命名变量绑定到表单上,如下例所示: First Name:Last Name: 13.9.3

5、. input 标签这个标签生成一个“text”类型的 HTML“input”标签。 关于这个标签的示例,请见第 13.9.2 节 “form 标签”。 13.9.4. checkbox 标签这个标签生成一个“checkbox”类型的 HTML“input”标签。让我们假设我们的 User 有比如新闻订阅和其他一组业余爱好这样的偏好。 下面就是一个 Preferences 类的例子: public class Preferences private boolean receiveNewsletter;private String interests;private String favouri

6、teWord;public boolean isReceiveNewsletter() return receiveNewsletter;public void setReceiveNewsletter(boolean receiveNewsletter) this.receiveNewsletter = receiveNewsletter;public String getInterests() return interests;public void setInterests(String interests) this.interests = interests;public Strin

7、g getFavouriteWord() return favouriteWord;public void setFavouriteWord(String favouriteWord) this.favouriteWord = favouriteWord;form.jsp 如下:Subscribe to newsletter?:Interests:Quidditch: Herbology: Defence Against the Dark Arts: Favourite Word:Magic: 有三种 checkbox 标签的使用方法满足你对 checkbox 的需求。 第一种用法:若绑定值是

8、 java.lang.Boolean 类型,则值为 true 时,input(checkbox)就标记为选中。其 value 属性对应于 setValue(Object)值的属性的解析值。 第二种用法:若绑定值是 array 或 java.util.Collection 类型,则当设定的setValue(Object)值出现在绑定的 Collection 中时,input(checkbox)就标记为选中。 第三种用法:若绑定值为其他类型,则当设定的 setValue(Object)与其绑定值相等时,input(checkbox)才标记为选中。注意,不管使用哪种方法,生成的 HTML 结构都是相

9、同的。下面是包含一些 checkbox 的 HTML 片段:Interests:Quidditch: Herbology: Defence Against the Dark Arts: 也许没有注意到的是在每个 checkbox 背后还隐藏了其他字段(field)。 当一个 HTML 页面中的 checkbox 没有 被选中时,它的值不会在表单提交时作为 HTTP 请求参数的一部分发送到服务器端, 因此我们需要给这个 HTML 的奇怪动作想出一个变通方案,来让 Spring 的表单数据绑定可以工作。 checkbox 标签遵循了Spring 现有的惯例,就是对于每个 checkbox 都包含了

10、一个下划线( _),再跟上一个隐藏参数。 这样一来,就相当于告诉 Spring“ 这个 checkbox 在表单中是可见的,并且希望表单数据将要被绑定到的对象能够反映出任意的 checkbox 的状态 ”。 13.9.5. checkboxes 标签这个标签生成多个“checkbox”类型的 HTML“input”标签。这一节建立在上一节 checkbox 标签的例子之上。 有时倾向于并不在 JSP 页面中列出全部可能的业余爱好,而是想在运行时提供一个可用选项的清单,并把它传递给相应标签。 这就是 checkboxes 标签的目标。 传入一个 Array、List,或者 Map, 并把可用选项

11、包含在“items”属性中。典型的情况是,这个绑定的属性是一个集合,这样它才能持有用户选择的多个值。 下面是使用了这个标签的 JSP 的一个例子:Interests: 这个例子假定了“interestList”是一个 List,作为模型属性它包含了用于被选择的字符串的值。 而在使用一个Map 的情况下,map 条目的键被用作值,map 条目的值被用作显示的文本标记。 也可以使用一个定制的对象,提供“itemValue”属性存放值,“itemLabel”属性存放文本标记。 13.9.6. radiobutton 标签这个标签生成一个“radio”类型的 HTML“input”标签。一个典型用法是

12、把多个标签实例绑定到同一属性上,但它们有不同的值。Sex:Male: Female: 13.9.7. radiobuttons 标签这个标签生成多个“radio”类型的 HTML“input”标签。正像上面提到的 checkboxes 标签,你可能希望传入一个运行时的变量作为可用的选项。 这种用法下就需要使用 radiobuttons 标签。 传入一个 Array、List,或者 Map, 并把可用选项包含在“items”属性中。在使用Map 的情况下,map 条目的键被用作值, map 条目的值被用作显示的文本标记。也可以使用一个定制的对象,提供“itemValue”属性存放值,“itemL

13、abel”属性存放文本标记。 Sex:13.9.8. password 标签这个标签生成一个“password”类型的 HTML“input”标签,并赋以绑定的值。Password:请注意默认情况下,口令的值 不会 被显示出来。 如果一定要显示口令的值,就把“showPassword” 属性的值置为 true。 Password:13.9.9. select 标签这个标签生成一个 HTML“select”元素。它支持被选中的选项的数据绑定, 也支持使用嵌套的 option 和options 标签。 我们假设有一个 User 拥有多项专长。Skills:如果这个 User 的专长是草药学,那么“

14、Skills”这一行的 HTML 源代码就如下所示:Skills:PotionsHerbologyQuidditch13.9.10. option 标签这个标签生成一个 HTML 的“option”。根据绑定的值,它会恰当的设置 “selected”属性。House:如果这个 User 的宿舍在 Gryffindor(Gryffindor 是哈利 波特在 Hogwarts 的宿舍译者注), 那么“House”这一行的 HTML 源代码就如下所示:House:GryffindorHufflepuffRavenclawSlytherin13.9.11. options 标签这个标签生成一个 HTM

15、L 的“option”标签的列表。根据绑定的值,它会恰当的设置 “selected”属性。Country: 如果这个 User 生活在英国,那么“Country”这一行的 HTML 源代码就如下所示:Country:-Please SelectAustriaUnited KingdomUnited States上面的例子展示了结合使用 option 标签和 options 标签产生相同的标准 HTML, 也让你在 JSP 中显式的指定一个值只用于显示目的(在它所处的位置),例如例子中的默认字符串:“-Please Select”。13.9.12. textarea 标签这个标签生成一个 HTM

16、L 的“textarea”。Notes:13.9.13. hidden 标签这个标签使用绑定的值生成类型为“hidden”的 HTML“input”标签。 在生成的 HTML 代码中,input 标签的值和表单支持对象相应属性的值保持一致。 如果要提交一个未绑定的值,就只能使用类型为“hidden”的 HTML input 标签了。 如果我们选择以隐藏形式提交“house” 的值,HTML 代码将如下所示:13.9.14. errors 标签这个标签通过一个 HTML“span”标签展现字段的错误。它提供了访问由你的控制器或者与你的控制器关联的任何验证器产生的错误的途径。假设我们想要在表单提交时显示所有与 firstName 和 lastName 字段有关的错误。 我们为 User 类的实例编写了名为 UserValidator 的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 外语文库 > 英语学习

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号