您的位置:首页 >> 编程开发 >> Java >> JavaBeans >> 正文
RSS
 

commons-beanutils1.7新增的LazyDynaBean

http://www.rdxx.com 06年12月16日 23:26 互联网 我要投稿

关键词: Bean , ls , ONS , COM , BEA
commons-beanutils 除了增加一些 Exception 处理外, 还包含了一个新的东西, 那就是 LazyDynaBean..

所谓 Lazy, 就是懒人写 DynaBean 的方法, 简化了 DynaBean 要先写 DynaProperty 的设定值, 我们可以完全不用去宣告他原本的预设值, 只要直接把值放进去就可以了.

在 commons-beanutils 範例中, 所举的例子很简单

DynaBean dynaBean = new LazyDynaBean();

dynaBean.set("foo", "bar"); // simple

dynaBean.set("customer", "title", "Mr"); // mapped dynaBean.set("customer", "surname", "Smith"); // mapped

dynaBean.set("address", 0, addressLine1); // indexed dynaBean.set("address", 1, addressLine2); // indexed dynaBean.set("address", 2, addressLine3); // indexed

最简单的方式, 就是 set("attribute","value"); 这样就产生了一个 DynaBean 的属性.

你也可以宣告成为 LazyDynaMap, 我们可以直接取得 DynaBean 的属性及数值成为一个 Map

DynaBean dynaBean = new LazyDynaMap();        // create DynaBean

dynaBean.set("foo", "bar"); // simple dynaBean.set("customer", "title", "Mr"); // mapped dynaBean.set("address", 0, addressLine1); // indexed

Map myMap = dynaBean.getMap() // retrieve the Map

如果你已经存在一个 Map, 就可以直接使用 LazyDynaMap 去建构一个新的 DynaBean..

Map myMap = ....                             // exisitng Map    DynaBean dynaBean = new LazyDynaMap(myMap);  // wrap Map in DynaBean    dynaBean.set("foo", "bar");                  // set properties

使用 LazyDynaClass, 我们可以简化开发 DynaProperty 的方式, 产生必要的数值型态.

MutableDynaClass dynaClass = new LazyDynaClass();    // create DynaClass

dynaClass.add("amount", java.lang.Integer.class); // add property dynaClass.add("orders", OrderBean[].class); // add indexed property dynaClass.add("orders", java.util.TreeMapp.class); // add mapped property

DynaBean dynaBean = new LazyDynaBean(dynaClass); // Create DynaBean with associated DynaClassor create a LazyDynaBean and get the DynaClass...

或是採用 LazyDynaBean.getDynaClass 去产生 MutableDynaClass 继续增加新的属性型态.
DynaBean dynaBean = new LazyDynaBean();              // Create LazyDynaBean    MutableDynaClass dynaClass =              (MutableDynaClass)dynaBean.getDynaClass();  // get DynaClass

dynaClass.add("amount", java.lang.Integer.class); // add property dynaClass.add("myBeans", myPackage.MyBean[].class); // add 'array' indexed property dynaClass.add("myMap", java.util.TreeMapp.class); // add mapped

可能大家比较少直接使用 commons-beanutils 的 DynaBean 部分, 其实我觉得最大的应用应该是 struts 的 DynaActionForm. 当你宣告成为 LazyValidatorForm, 可以不用继续在 struts-config.xml 中设定相关的属性值, 她会自己把 page submit 进来的 field 转换成为 ActionFormBean 的一部份.

LazyDynaBean 这个专案是 >>http://www.niallp.pwp.blueyonder.co.uk/ 所设计出来的未来, Struts 1.2.x 将会支援这个功能. 也可以直接下载 2004/7/31 以後的 struts build 版本, 或是下载相关的 LazyValidatorForm, LazyvalidatorActionForm, LazyValidatorMap, LazyValidatorActionMap.

共2页  1 2

 
 
标签: Bean , ls , ONS , COM , BEA 打印本文
 
 
  相关资讯
RSS
 
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站