- 浏览: 74311 次
- 性别:
- 来自: z驻马店
文章分类
最新评论
DynaBean 的使用
在正常的开发的过程中,我们时常会遇到这样的问题, JavaBean 的属性是不确定的、动态的,其属性的确定是由逻辑控制来处理的。比如这样的一种情况,有一组基本报表信息需要 JavaBean 来描述,这组报表在结构上具有很大的相似性,如果你不想为每一份基本报表都创建一个 JavaBean ,那么接下来为你介绍一种为 JavaBean 动态创建属性的方法。
1. DynaBean 的创建
为了描述的便利,我们虚拟一个简单的需求环境,就以上面提到的描述一组基本报表信息为例吧,我们假设基本报表的名称为 basicReport ,每一份基本报表都包含 3 个属性 id 、 name 、 rowNo( 行号 ) 。在下面我们将使用 org.apache.commons.beanutils 包提供为我们的一些接口和类来处理上面提到的需求。
1.1. DynaBean and DynaClass
DynaBean 和 DynaClass 是 beanutils 包实现 DynaBean 最基本、最常用的接口。对于 DynaBean 和 DynaClass 你可以这样理解, DanyBean 提供了可以动态修改实现他的类的属性名称、属性值、属性类型的功能;而 DynaClass 负责为一个或者多个实现了 DanyBean 接口的对象提供属性的功能, DynaClass 提供的属性正是我们动态创建的那些属性参考 。如果你不理解,在下一节 BasicDynaBean and BasicDynaClass 我们以实例展示。
关于 DynaBean 和 DynaClass 的详细描述,参见 DynaBean 和 DynaClass 。
1.2. BasicDynaBean and BasicDynaClass
BasicDynaBean 和 BasicDynaClass 分别实现了 DynaBean 和 DynaClass 接口, BasicDynaBean 和 BasicDynaClass 实现了提供一组基本的属性的能力,这组属性是由你动态定义的,而且这组属性中的成员应该是 DynaProperty 类的实例。首先,你要为 DynaClass 创建你所关心的一组属性,代码如下:
示例代码: DynaProperty[] props = new DynaProperty[] { new DynaProperty("id",String.class), new DynaProperty("name", String.class), new DynaProperty("rowNo", int.class), new DynaProperty("c1", long.class), new DynaProperty("c2",long.class), new DynaProperty("c3",long.class) }; BasicDynaClass dynaClass = new BasicDynaClass("basicReport", null, props);
说明: 在上面的代码中,我们假设为 basicReport 创建了 6 个属性,同时告诉了 BasicDynaClass ,我们需要创建一个名称为 basicReport 的报表, basicReport 的类型我们采用默认的 BasicDynaBean 。接下来,我们由 dynaClass 对象为我们实例化我们设置的这个动态对象,参考代码如下:
示例代码: DynaBean basicReport = dynaClass.newInstance(); basicReport.set("id","124578"); basicReport.set("name"," 在校生数 "); basicReport.set("rowNo",new Integer(1)); basicReport.set("c1",new Long(125)); basicReport.set("c2",new Long(125)); basicReport.set("c3",new Long(125)); String id = (String)basicReport.get(“id”); String name = (String) basicReport.get("name"); int rowNo = ((Integer)basicReport.get("rowNo")).intValue(); 在上面的代码中我们完成了 DynaBean 的实例化 (basicReport) ,并且对实例化的 basicReport 进行了设置和获取的操作。 关于 DynaBean 还有其他形式的应用,像 ResultSetDynaClass 、 LazyDynaBean 等分别描述了如何处理数据库检索结果集的 DynaBean 处理、以及简略 DynaProperties 处理的 LazyDynaBean 的处理方式,这些都能极大地简化开发过程中 JavaBean 的处理,要了解更多请参考 http://jakarta.apache.org/commons/beanutils/api/index.html 。 上面讲述的常常是在逻辑处理时碰到的,那么在 Struts 框架下动态的页面的显示以及提交是否也有这方面的处理呢?答案是肯定的。 BasicDynaClass
一共提供了3个构造函数,我这里强调的只有一点,对于参数dynaBeanClass的一个说明。在上面的代码中,我们指定要创建一个名称为“ basicReport ”的DynaBean,dynaBeanClass参数说明的是你希望系统为你创建的DynaBean的类型是什么,如果为null的话,系统就认为你要创建的是BasicDynaBean类型的DynaBean实例。如果你希望用其他类型代替null的话,那么指定的类应该实现了DynaClass接口,否则就会抛出IllegalArgumentException 异常 。
发表评论
-
javascript encodURI() 和 JAVA URLDecoder.decode
2012-08-08 11:11 1389Js中 encodURI(encodURI(xxxx)),在j ... -
关于js中"window.location.href"、"location.href"
2012-04-12 17:08 756关于js中"window.location.href ... -
hibernate.current_session_context_class 错误
2011-12-27 15:24 869在使用SessionFactory的getCurrentSes ... -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
2011-12-27 10:14 756Insert是T-sql中常用语句,Insert INTO t ... -
Java的SPI机制
2011-12-02 15:39 662SPI的全名为Service Provider Interfa ... -
关于TomCat自动加载class问题
2011-12-01 16:49 3228每次用tomcat的时候,每当我对类做了修改必须要重新启动to ... -
Eclipse无法自动编译的问题
2011-11-21 10:37 1089今天遇到了一个小问题,就是eclipse下导入的工程都无法 ... -
HttpSession , HttpSessionListener , HttpSessionBindingListener , HttpSessionAtri
2011-10-26 16:35 804原来我一直认为只有当 ... -
jsp 自定义标签
2011-10-08 21:31 991有时候web.xml中无法配置<taglib>,原 ... -
Dom4j使用
2011-09-29 19:37 1355先来一段网上的废话: om4j是一个Java的XML API ... -
java.lang.NoClassDefFoundError: org/jaxen/JaxenException
2011-09-29 16:47 1052Exception in thread "mai ... -
commons logging log4js的使用
2011-09-28 17:14 1022为什么要用日志(Log ... -
javascript void(0)的含义
2011-09-28 08:55 897我想使用过ajax的都常见这样的代码:<a href ... -
struts1 验证框架
2011-09-25 11:53 11331:建立validator-rules.xml和 valida ... -
struts1 DispatchAcion
2011-09-24 18:40 823public class LoginAction extend ... -
Exploded location overlaps an existing deployment” 的解决方法
2011-09-24 17:10 934项目->properties->MyEclipse ... -
java程序员面试交流项目经验
2011-09-02 20:23 9061:请你介绍一下你自己 ... -
Java项目开发规范之方法命名规范
2011-09-02 20:19 10021 共用类公共用类要求以“功能英文名称(首字母大写)”+ Ut ... -
伪代码
2011-08-14 19:33 904所谓伪代码其实就是配合初学编程的,常用代码配合写算法,也就是把 ...
相关推荐
本文属于作者原创,属于apache Dany Bean 方面入门的文章.
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException java.lang.NoClassDefFoundError: org/apache/commons/lang/...
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException java.lang.NoClassDefFoundError: org/apache/commons/...
在java中使用json需要引入以下六个jar包,分别为: commons-lang-2.4.jar commons-collections-3.2.1.jar commons-beanutils-1.8.3.jar json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar commons-logging-1.1.3.jar ...
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean commons-collections.jar 不加这个包 java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap commons-...
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException java.lang.NoClassDefFoundError: org/apache/commons/lang/...
有丰富的MINA通信软件开发经验,现在已经有成熟的底层框架(结合了反射、DynaBean、Spring等多种技术),可以实现程序自动对上位机和下位机之间的通信协议进行解析,并在国网公司智能电网的大型项目中使用。...
commons-beanutils-1.8.0.jar org/apache/commons/beanutils/DynaBean commons-collections.jar org/apache/commons/collections/map/ListOrderedMap commons-lang-2.4.jar org/apache/commons/lang/exception/...
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean commons-collections-3.2.2.jar 不加这个包 java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap commons...
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean commons-collections.jar 不加这个包 java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap commons-...
01.JEPLUS新特性(系统功能).mp4 02.JEPLUS新特性(数据源讲解).mp4 ...19.JEPLUS数据库操作DynaBean.mp4 20.Excel导入技巧.mp4 21.定时任务、流程事件灵活运用.mp4 22.对接第三方数据库使用案例.mp4
json-lib-2.4-jdk15.jar,ezmorph-1.0.6.jar,commons-lang-2.6.jar,commons-beanutils-1.9.3.jar,commons-collections-3.2.2.jar,commons-logging-1.2.jar
Java的Json串解析包,提供给有需要的同学。
数据很复杂时,JavaScript程序员喜欢把他们作为json串进行处理,后台收到后需要对json字符串进行解析,幸好有JSON-lib,这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean。
java8流源码可乐 代理的通用本体抽象层——一种上下文绑定器,用于跨 AOSE/MAS 和 M&S/ABM 重用异构代理代码 ...透明DynaBean装饰的Wrapper API(使用java.lang.reflect.Proxy和java.beans.Introspector )支
Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的。无论谁的项目,始终一天都会用得上它。我算是后知后觉了,第一回看到它的...4.5 动态Bean 见用DynaBean减除不必要的VO和FormBean
hbase本身提供的api中, 只有scan是用来查询数据的, 因此我们需要将sql语句转成scan 参考<<>>发现是可行的 因此总体架构为 sql语句 --sql解析器--> sql语法节点(对象) -> scan -> hbase -> ResultScanner ->...
SwingController 是 Swing/AWT 应用程序的 MVC 框架,支持拦截过滤器、Commander、带有组件注释的数据绑定、Jakarta DynaBean 等。