1、Spring的表单标签库包含在spring.jar中。 这个库的描述符(descriptor)叫做spring-form.tld。要使用这个库中的标签,在JSP页面的开头加入下面声明:在上面的声明中,form就是为想要使用的这个库中的标签所确定的标签命名前缀。13.9.2.form标签这个标签会生成一个HTML的“form”标签,同时为内部标签的绑定暴露了一个绑定路径(binding path)。 它把命令对象(command object)放在PageContext中,这样内部的标签就可以访问这个命令对象了。 这个库中的其他标签都是form标签的嵌套标签。假设我们有一个叫做User的领域对象
2、,它是一个JavaBean, 拥有诸如firstName和lastName这样的属性。 我们将把它当作返回form.jsp的表单控制器的表单支持对象(form backing object)。 下面是一个form.jsp可能的样子的例子:form:form trtdFirst Name:/tdinput path=firstName /trLast Name:lastNametd colspan=2input type=submit value=Save Changes/table/form:上面firstName和lastName的值是从由页面控制器放置在PageContext中的命令对象中
3、得到的。 请继续读下去来看几个关于如何使用form标签的内部标签的例子。生成的HTML看起来就是一个标准的form:form method=POSTinput name= type=textHarry/Potter/form上面的JSP有一个预设前提,就是表单支持对象(form backing)的变量名是“command”。 如果你将这个表单支持对象用其他名称加以定义(这可算是一种最佳实践),你就可以将这个命名变量绑定到表单上,如下例所示:form commandName=user13.9.3.input标签这个标签生成一个“text”类型的HTML“input”标签。 关于这个标签的示例,请
4、见第13.9.2节 “form标签”。13.9.4.checkbox标签这个标签生成一个“checkbox”类型的HTML“input”标签。让我们假设我们的User有比如新闻订阅和其他一组业余爱好这样的偏好。 下面就是一个Preferences类的例子:public class Preferences private boolean receiveNewsletter; private String interests; private String favouriteWord; public boolean isReceiveNewsletter() return receiveNewsl
5、etter; public void setReceiveNewsletter(boolean receiveNewsletter) this.receiveNewsletter = receiveNewsletter; public String getInterests() return interests; public void setInterests(String interests) this.interests = interests; public String getFavouriteWord() return favouriteWord; public void setF
6、avouriteWord(String favouriteWord) this.favouriteWord = favouriteWord;form.jsp如下:Subscribe to newsletter?:%- Approach 1: Property is of type java.lang.Boolean -%checkbox path=preferences.receiveNewsletterInterests:%- Approach 2: Property is of an array or of type java.util.Collection -% Quidditch:pr
7、eferences.interestsQuidditch Herbology:Herbology Defence Against the Dark Arts:Defence Against the Dark ArtsFavourite Word:%- Approach 3: Property is of type java.lang.Object -% Magic:preferences.favouriteWordMagic有三种checkbox标签的使用方法满足你对checkbox的需求。 第一种用法:若绑定值是java.lang.Boolean类型,则值为true时,input(check
8、box)就标记为选中。其value属性对应于setValue(Object)值的属性的解析值。 第二种用法:若绑定值是array或java.util.Collection类型,则当设定的setValue(Object)值出现在绑定的Collection中时,input(checkbox)就标记为选中。 第三种用法:若绑定值为其他类型,则当设定的setValue(Object)与其绑定值相等时,input(checkbox)才标记为选中。注意,不管使用哪种方法,生成的HTML结构都是相同的。下面是包含一些checkbox的HTML片段:spring.framework.eckboxhidden1 name=_preferences.interests也许没有注意到的是在每个checkbox背后还隐藏了其他字段(field)。 当一个HTML页面中的checkbox没有被选中时,它的值不会在表单提交时作为HTTP请求参数的一部分发送到服务器端, 因此我们需要给这个HTML的奇怪动作想出一个变通方案,来让Spring的表单数据绑定可以工作。 checkbox标签遵循了Spring现有的惯例,就是对于每个checkbox都包含了一个下划线(_),再跟上一个隐藏参数。 这样一来,就相当于告诉Spring“ 这个checkbox在表单中是可
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1