Struts1.x系列教程(14):动态Form - 编程入门网
Struts1.x系列教程(14):动态Form时间:2011-01-10 blogjava 银河使者一、动态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。这将大大简化开发人员的工作量。 二、声明动态Form 声明一个动态Form非常简单,只需要在struts- config.xml的<form-beans>元素中加入一个<form-bean>子元素,并使用<form- property>元素来定义动态Form的属性。我们可以定义的属性类型有简单属性(如String)、索引属性(如数组)、映射属性(如 HashMap)以及嵌套属性(属性类型是另一个类)。 对于动态Form来说,Form的类型必须是org.apache.struts.action.DynaActionForm或其子类。声明一个动态Form的代码如下: <form-bean name="dynamicForm" type="org.apache.struts.action.DynaActionForm"> <!-- 声明一个简单属性 --> <form-property name="simpleProp" type="java.lang.String" initial="bill"/> <!-- 声明一个索引属性 --> <form-property name="indexedProp" type="java.lang.String[]" /> <!-- 声明一个映射属性 --> <form-property name="mappedProp" type="java.util.HashMap" /> <!-- 声明一个嵌套属性 --> <form-property name="nestedProp" type="com.bean.MyBean" /></form-bean> 三、动态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,就无法使用泛型进行自动类型转换了。 Struts1.x系列教程(14):动态Form(2)时间:2011-01-10 blogjava 银河使者四、访问动态Form 我们可以使用DynaActionForm类的getter方法来读取动态Form中的属性值。DynaActionForm类的getter方法有三个重载形式,分别用来读取简单属性、索引属性和映射属性。这三个getter方法的定义如下: public Object get(String name) ; // 读取简 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |