<b>Struts1.x系列教程(14):动态Form</b>[Java编程]
本文“<b>Struts1.x系列教程(14):动态Form</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、动态Form简介
固然ActionForm功效强盛,但有些时刻利用起来有些麻烦.如每成立一个用户录入界面(JSP页面),就得成立一个ActionForm子类来和这个页面对应.当然,我们可以采取嵌套属性从一定程度上补偿这个问题.但是在成立新的用户录入界面时,仍不可避免地要成立新的ActionForm子类.
在Struts1.2.6及今后的Struts版本中供应了一种动态Form的技术.使得不用再成立新的ActionForm便可以封装用户提交的数据.实际上,这种技术将定义ActionForm子类的工作变成了编写XML文件的工作.
每定义一个动态Form,就要在struts-config.xml中加一个<form-bean>元素,并利用<form-property>子元从来定义动态Form的属性.
在本章的最后还会介绍一个LazyValidatorForm类,通过这个类乃至可以不定义动态Form的属性便可以利用动态Form.这将大大简化开辟人员的工作量.
2、声明动态Form
声明一个动态Form非常简单,只需求在struts- config.xml的<form-beans>元素中加入一个<form-bean>子元素,并利用<form- property>元从来定义动态Form的属性.我们可以定义的属性范例有简单属性(如String)、索引属性(如数组)、映射属性(如 HashMap)以及嵌套属性(属性范例是另一个类).
关于动态Form来说,Form的范例必须是org.apache.struts.action.DynaActionForm或其子类.声明一个动态Form的代码以下:
<form-beanname="dynamicForm" type="org.apache.struts.action.DynaActionForm">
<!--声明一个简单属性-->
<form-propertyname="simpleProp"type="java.lang.String"initial="bill"/>
<!--声明一个索引属性-->
<form-propertyname="indexedProp"type="java.lang.String[]"/>
<!--声明一个映射属性-->
<form-propertyname="mappedProp"type="java.util.HashMap"/>
<!--声明一个嵌套属性-->
<form-propertyname="nestedProp"type="com.bean.MyBean"/>
</form-bean>
3、动态Form的属性范例
下面列出了动态Form支持的简单属性的全部范例:
java.math.BigDecimal
java.math.BigInteger
java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.Class
java.lang.Double
java.lang.Float
java.lang.Integer
java.lang.Long
java.lang.Short
java.lang.String
java.sql.Date
java.sql.Time
java.sql.Timestamp
实际上,上面的数据范例就是Java中供应了简单数据范例.它们用在动态Form中和在Java中代表的数据范例是完好一样的.我们还可以利用<form-property>元素的initial属性为动态Form的简单属性指定一个默许值.如在例程6-11中name属性的默许值为“bill”.
关于索引属性的范例来说,可以是数组,也可以是java.util.List接口的类(如ArrayList).我们还可认为动态Form的属性指定实现java.util.Map接口的类作为数据范例(也就是映射属性).但遗憾的是,假如利用动态Form,就无法利用泛型举行自动范例转换了.
以上是“<b>Struts1.x系列教程(14):动态Form</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |