spring标签使用文档格式.docx
《spring标签使用文档格式.docx》由会员分享,可在线阅读,更多相关《spring标签使用文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
![spring标签使用文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/15/0ffeac89-e6f6-4316-867e-cc1ad71f0b73/0ffeac89-e6f6-4316-867e-cc1ad71f0b731.gif)
Spring的表单标签库包含在spring.jar中。
这个库的描述符(descriptor)叫做spring-form.tld。
要使用这个库中的标签,在JSP页面的开头加入下面声明:
<
%@taglibprefix="
form"
uri="
http:
//www.springframework.org/tags/form"
%>
在上面的声明中,form就是为想要使用的这个库中的标签所确定的标签命名前缀。
13.9.2.
form标签
这个标签会生成一个HTML的“form”标签,同时为内部标签的绑定暴露了一个绑定路径(bindingpath)。
它把命令对象(commandobject)放在PageContext中,这样内部的标签就可以访问这个命令对象了。
这个库中的其他标签都是form标签的嵌套标签。
假设我们有一个叫做User的领域对象,它是一个JavaBean,拥有诸如firstName和lastName这样的属性。
我们将把它当作返回form.jsp的表单控制器的表单支持对象(formbackingobject)。
下面是一个form.jsp可能的样子的例子:
form:
form>
<
table>
tr>
td>
FirstName:
/td>
inputpath="
firstName"
/>
/tr>
LastName:
lastName"
tdcolspan="
2"
>
inputtype="
submit"
value="
SaveChanges"
/table>
/form:
上面firstName和lastName的值是从由页面控制器放置在PageContext中的命令对象中得到的。
请继续读下去来看几个关于如何使用form标签的内部标签的例子。
生成的HTML看起来就是一个标准的form:
formmethod="
POST"
inputname="
type="
text"
Harry"
/>
Potter"
/form>
上面的JSP有一个预设前提,就是表单支持对象(formbacking)的变量名是“command”。
如果你将这个表单支持对象用其他名称加以定义(这可算是一种最佳实践),你就可以将这个命名变量绑定到表单上,如下例所示:
formcommandName="
user"
13.9.3.
input标签
这个标签生成一个“text”类型的HTML“input”标签。
关于这个标签的示例,请见第
13.9.2
节“form标签”。
13.9.4.
checkbox标签
这个标签生成一个“checkbox”类型的HTML“input”标签。
让我们假设我们的User有比如新闻订阅和其他一组业余爱好这样的偏好。
下面就是一个Preferences类的例子:
publicclassPreferences{
privatebooleanreceiveNewsletter;
privateString[]interests;
privateStringfavouriteWord;
publicbooleanisReceiveNewsletter(){
returnreceiveNewsletter;
}
publicvoidsetReceiveNewsletter(booleanreceiveNewsletter){
this.receiveNewsletter=receiveNewsletter;
publicString[]getInterests(){
returninterests;
publicvoidsetInterests(String[]interests){
this.interests=interests;
publicStringgetFavouriteWord(){
returnfavouriteWord;
publicvoidsetFavouriteWord(StringfavouriteWord){
this.favouriteWord=favouriteWord;
}
form.jsp如下:
Subscribetonewsletter?
:
%--Approach1:
Propertyisoftypejava.lang.Boolean--%>
checkboxpath="
preferences.receiveNewsletter"
Interests:
%--Approach2:
Propertyisofanarrayoroftypejava.util.Collection--%>
Quidditch:
preferences.interests"
Quidditch"
Herbology:
Herbology"
DefenceAgainsttheDarkArts:
DefenceAgainsttheDarkArts"
FavouriteWord:
%--Approach3:
Propertyisoftypejava.lang.Object--%>
Magic:
preferences.favouriteWord"
Magic"
有三种checkbox标签的使用方法满足你对checkbox的需求。
∙第一种用法:
若绑定值是java.lang.Boolean类型,则值为true时,input(checkbox)就标记为选中。
其value属性对应于setValue(Object)值的属性的解析值。
∙第二种用法:
若绑定值是array或java.util.Collection类型,则当设定的setValue(Object)值出现在绑定的Collection中时,input(checkbox)就标记为选中。
∙第三种用法:
若绑定值为其他类型,则当设定的setValue(Object)与其绑定值相等时,input(checkbox)才标记为选中。
注意,不管使用哪种方法,生成的HTML结构都是相同的。
下面是包含一些checkbox的HTML片段:
spring.framework.eckbox"
hidden"
1"
name="
_preferences.interests"
也许没有注意到的是在每个checkbox背后还隐藏了其他字段(field)。
当一个HTML页面中的checkbox没有被选中时,它的值不会在表单提交时作为HTTP请求参数的一部分发送到服务器端,因此我们需要给这个HTML的奇怪动作想出一个变通方案,来让Spring的表单数据绑定可以工作。
checkbox标签遵循了Spring现有的惯例,就是对于每个checkbox都包含了一个下划线("
_"
),再跟上一个隐藏参数。
这样一来,就相当于告诉Spring“这个checkbox在表单中是可