(看别人的可以简单理解,先记下来在说)
DynaBean是BeanUtils里的宝贝之一。有了动态Bean,就不用写那么多VO出来了,特别那些只是为了和View交互而存在的bean.
DynaBean的用法很简单,特别是有了LazyBynaBean之后.
DynaBean car = new LazyDynaBean();
car.set("carNo",1);
car.set("owner","张三");
out.print(car.get("carNo"));
看着像一个map,只不过多了反射的功能,所以支持那些使用反射来获取属性的场合。但是因为他没有car.getCarNo()这样的函数,只能用car.get("carNo"),所以也就不支持JSTL里面<c: out value="{car.carNo}">这样的语法,因为JSTL是默认转回car.getCarNo()的。而且几经讨论,JSTL不支持 car.userFunction(),理由是不希望代码里有java代码.
因此,还是写<%=car.get("carNo")>好了,如果是陷在JSTL的一个循环结构里,就要用从pageContext里面把bean拿出来,
又或者自己写的tag,幸亏也很简单,用BeanUtils.getProperty(bean,property)函数就可以了,
最后,如果car.set("carNo",null),会得到一个莫名其妙的Object对象,如果要使它为Null,需要先定义他的类型。
因此,对于可能为Null的列,需要用LazyClass定义类型,幸亏也很Lazy, 不可能为Null的值可以不管。
LazyDynaClass lc = new LazyDynaClass();
lc.add("owner",String.class); // 指定null converter String
DynaBean car = new LazyDynaBean(lc);
car.set("carNo",1);
car.set("owner",null);
分享到:
相关推荐
Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的。无论谁的项目,始终一天都会用得上它。我算是后知后觉了,第一回看到它的...4.5 动态Bean 见用DynaBean减除不必要的VO和FormBean
Apache DynaBean 是 Apache Commons BeanUtils 库中的一种组件,它提供了一种动态创建和操作 ...使用 DynaBean,开发者可以避免为每种可能的数据结构创建单独的 JavaBean 类,从而提高了代码的可维护性和可扩展性。
设置完属性后,我们就可以像操作普通JavaBean一样使用这个DynaBean了,只是访问属性时使用get()方法和属性名,而不是getter方法。 总结起来,使用动态Bean的好处在于它的灵活性。我们可以在程序运行时根据需要动态...
在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 ...
3. **DynaBean**: DynaBean是JavaBean的一个动态版本,它允许在运行时动态添加、删除和修改属性。与标准JavaBean相比,DynaBean更灵活,适合处理属性不确定或需要动态扩展的场景。 4. **DynaClass**: 与Java的`...
有丰富的MINA通信软件开发经验,现在已经有成熟的底层框架(结合了反射、DynaBean、Spring等多种技术),可以实现程序自动对上位机和下位机之间的通信协议进行解析,并在国网公司智能电网的大型项目中使用。...
首先,我们要理解JSON的基本结构。JSON由键值对组成,键是字符串,值可以是各种数据类型,包括字符串、数字、布尔值、数组、对象或者null。这种结构与Java中的Map和List非常相似,因此解析JSON到Java对象或者将Java...
3. **使用instanceof检查**:在转换前使用`instanceof`关键字检查对象是否是目标类型,避免不必要的转换。 4. **日志记录**:增加日志输出,了解转换失败的具体上下文。 5. **单元测试**:编写针对转换逻辑的单元...
10. **最佳实践**: 在使用BeanUtils时,要注意避免空指针异常,确保Bean对象和属性名称的正确性。同时,对于大规模的应用,推荐使用缓存机制,如`BeanUtilsBean.getInstance().registerCustomConverter()`,以提高...
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
4. **DynaBean**:动态Bean接口,允许在运行时动态添加和删除属性,增加了灵活性。 5. **Naming**:支持JNDI风格的属性命名,便于处理复杂的属性路径。 这两个库常常一起使用,因为BeanUtils在处理Bean属性时,可以...
- ConstructorUtils和MethodUtils:提供使用反射构造对象和调用方法的工具。 - DynaBean:一个动态的Bean实现,可以处理未知属性。 4. Jakarta Commons数学和时间库 这些库提供了额外的数学和时间处理功能,包括...
集合类概述、Bean工具(BeanUtil)和DynaBean为Java集合框架和JavaBean操作提供了便利。表达式解析(BeanPath)、集合工具(CollUtil)、Iterator工具(IterUtil)和有界优先队列(BoundedPriorityQueue)则为集合...
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean commons-collections.jar 不加这个包 java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap commons-...
json-lib-2.2.3-jdk15.jar commons-beanutils-1.7.0.jar commons-httpclient-3.1.jar ...要在java里使用json用到的jar包怎么导入?把包粘贴到WebRootWEB-INFlib目录下就行了 不用自己单独建立libs目录
6. **动态Bean**:` DynaBean `接口提供了动态属性的概念,允许在运行时创建和修改属性,增强了灵活性。 BeanUtils-1.8.3版本可能包括以下组件: - `BeanUtils.jar`:包含所有BeanUtils类的JAR文件,用于引入项目中...
同样,缺少`ezmorph-1.0.6.jar`会导致`net.sf.ezmorph.Morpher`类无法找到,而`commons-beanutils-1.8.0.jar`对于`DynaBean`类的使用至关重要。 在实际使用中,将Java对象转换为JSON格式,可以通过JSON库提供的API...
java8流源码可乐 代理的通用本体抽象层——一种上下文绑定器,用于跨 AOSE/MAS 和 M&S/ABM 重用异构代理代码 常见的 具有异步回调的函数式风格:和 ...API(使用java.lang.reflect.Proxy和java.beans.Introspector )支
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException java.lang.NoClassDefFoundError: org/apache/commons/...