commons-beanutils 1.7 新增的 LazyDynaBean

news/2023/12/1 8:58:54
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.

網頁中有很簡單卻很清楚的說明

簡化了修改 VO, 還要修改 struts-config.xml 的麻煩..





http://www.niftyadmin.cn/n/3653788.html

相关文章

tomcat9 0 最新版初体验

1,rpm方式安装jdk8软件准备:先下载jdk8 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。下载linux64位版本的rpm安装包,wget http://download.oracle.com/otn-pub/java/jdk/8u6…

EJB3.0 (序)

CSDN 的周姐和鐵鋒找我寫 EJB3.0好久沒有想要寫書的衝動了.. 被她們一講.. 硬是在我忙碌的生活中, 再加上一件雜務 ~ 也罷, 就讓我開始練習寫出一本書吧 ! 話說.. 為何想要寫 EJB3.0 呢 ? 可能是在 JavaTWO 2005 Taiwan 的大會上, 演講過相關的內容, 在之前, 花了半年的時間做…

zookeper第二三课-Zookeeper经典应用场景实战

1. Zookeeper Java客户端实战 ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户端API有: ZooKeeper官方的Java客户端API。第三方的Java客户端API,比如Curator。 ZooKeeper官方的客户端API提供了基本的操作。例…

ORACLE 定时清理归档日志详细过程

业务增长发展迅猛,归档日志增长太快,磁盘承受不了,所以准备做个定时清理归档日志的定时任务。1、RM方式清理归档日志清理归档日志,可以人为的删除已经归档好的日志文件,然后再调用rman里面RMAN> crosscheck archive…

Chapter 1 初見 EJB3.0 (1)

以目前 2005/09 的狀況來看, EJB3.0 的 Specification 已經公開讓大家審閱了, 距離最後的確定版本時日也不遠了. 這時候開始來學習 EJB3.0 有點早, 如果想要在贏在起跑點上, 這時候就閱讀我寫的書是最恰當不過的. 1-1 安裝 JBoss AS 4.0.3為什麼我要用 Evil JBoss 呢 ? 其實我…

Chapter 1 初見 EJB3.0 (2)

1-2 安裝 Eclipse 3.1.1 JBoss Eclipse IDE Tool 1.5M3因為 JBossAS 建議使用的開發 IDE 是 Eclipse , 也有相關的 JBoss Eclipse IDE Tool, 所以我也採用 Eclipse 做為我們研究 EJB3.0 的工具. 附錄的地方, 我會說明 NetBeans Glassfish ( SunOne Application 9 : Opensourc…

运维工程师面试题汇总

运维工程师面试题1、修复并检测/dev/sdb2、Tomcat容器和jetty容器的特点和区别3、分配只读帐号4、如何用zabbix帐号能运行oracle帐号下的sqlplus命令5、写一个脚本,简单检测192.168.1.0/23网段里的机器,区分出存活和离线的主机(所有服务器默认…

@Resource 資源取得 JNDI 的相關資源

在 TheServerside 看到這篇文章http://www.theserverside.com/news/thread.tss?thread_id39828我利用簡單的資料庫連結做說明, Java EE 5.0 如何使用 Resource 來取得相關資源1. JDBC direct connect the Database這是簡單的範例, 我們可以直接利用 DriverManager 去取得 conn…

oracle11g cursor mutex S导致的load过高的追踪过程详解

--> 问题背景同事电话我,说oracle数据库很慢,很卡,cpu99%了。1,查看问题现场,cpu高单核不高,load高多核,看到每个核只有20%左右使用了1/5,所以数据库应该没事,没有到故…

Ant最佳实践Top 15

Ant最佳实践Top 15作者:Eric M. Burke, Java Extreme Programming Cookbook的合作者之一12/17/2003在Ant之前,创建和发布Java应用对于平台相关的脚本,makefiles,IDEs的属性,或者过程手册等的要求缺一不可.现在,几乎每一个开源的Java项目都使用Ant.同时,大量的公司在他们的内部项…

tomcat启动报错 java net BindException Permission denied 80

1,启动报错显示[org.springframework.web.servlet.DispatcherServlet]FrameworkServlet springMvc: initialization completed in 382 msJun 01, 2015 6:39:06 PM org.apache.coyote.http11.Http11Protocol startSEVERE: Error starting endpointjava.net.BindExcep…

JUnit重装上阵

JUnit重装上阵作者:Ralf Stuckert 12/07/2006 我们必须承认,JUnit是Java世界使用最广泛的(单元)测试工具.我们也有其他功能强大的测试框架,例如TestNG(它的功…

MySQL DBA 招聘小结

招聘MySQL DBA,与10来个2年MySQL DBA工作经验的朋友交流过,谈谈自己的心得:各位可以先看下互联网公司的薪资待遇: http://blog.csdn.net/mchdba/article/details/222743511 关于2年MySQL DBA经验看简历描述公司项目的时候&#…

使用Google Web Toolkit减轻AJAX的开发

使用Google Web Toolkit减轻AJAX的开发——使用GWT来创建一个简单的AJAX应用作者:Jeff Hanson,JavaWorld.com,12/13/06Google Web Toolkit(GWT)是一个Java开发框架,用来减轻AJAX(Asynchronous JavaScript and XML)的开发难度。使用…

oracle11g plsql调试存储过程卡死的处理技巧

>> PLSQL调试存储过程卡死有多次进行TEST调试存储过程,在某一个环境动不了,然后卡住,plsql界面进入假死状态了,而这个时候只有在windows里面的任务管理器里面强行关闭plsql的后台进程后,然后再次登录打开plsql&a…

Struts快速入门(五完)

用FormTag初始化ActionForm对象本节早前提到,HTML表单中动作URL被映射到一个配置,并轮流被映射到一个配置。FormTag中由action属性制定的URL被FormTag转换为一个在部署描述符中确定的路径结构URL。对于扩充的映射,这意味着资源扩展和指定的一…
最新文章