<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 28,  comments - 15,  trackbacks - 0

    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);

    ?

    ?

    ?

    ??????

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ??????

    說明: ?????????????????????????????????????????????????????????????????

    ?????? BasicDynaClass 一共提供了3個構造函數,我這里強調的只有一點,對于參數dynaBeanClass的一個說明。在上面的代碼中,我們指定要創建一個名稱為“ basicReport ”的DynaBean,dynaBeanClass參數說明的是你希望系統為你創建的DynaBean的類型是什么,如果為null的話,系統就認為你要創建的是BasicDynaBean類型的DynaBean實例。如果你希望用其他類型代替null的話,那么指定的類應該實現了DynaClass接口,否則就會拋出IllegalArgumentException 異常 ????????????????????????????????????????????????????????????????????????????????????????????????????????????

    ?

    ?

    ????????????????????

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?


    ?????? 在上面的代碼中,我們假設為 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 框架下動態的頁面的顯示以及提交是否也有這方面的處理呢?答案是肯定的。

    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);

    ?

    ?

    ?

    ??????

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ??????

    說明: ?????????????????????????????????????????????????????????????????

    ?????? BasicDynaClass 一共提供了3個構造函數,我這里強調的只有一點,對于參數dynaBeanClass的一個說明。在上面的代碼中,我們指定要創建一個名稱為“ basicReport ”的DynaBean,dynaBeanClass參數說明的是你希望系統為你創建的DynaBean的類型是什么,如果為null的話,系統就認為你要創建的是BasicDynaBean類型的DynaBean實例。如果你希望用其他類型代替null的話,那么指定的類應該實現了DynaClass接口,否則就會拋出IllegalArgumentException 異常 ????????????????????????????????????????????????????????????????????????????????????????????????????????????

    ?

    ?

    ????????????????????

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?


    ?????? 在上面的代碼中,我們假設為 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 框架下動態的頁面的顯示以及提交是否也有這方面的處理呢?答案是肯定的。

    posted on 2006-10-17 18:12 zhangxl 閱讀(448) 評論(0)  編輯  收藏 所屬分類: common

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類(17)

    隨筆檔案(28)

    文章分類(30)

    文章檔案(30)

    相冊

    收藏夾(2)

    hibernate

    java基礎

    mysql

    xml

    關注

    壓力測試

    算法

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 96306
    • 排名 - 601

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久免费观看国产精品88av| 天天干在线免费视频| 亚洲人成在久久综合网站| 国产中文字幕免费| 91福利免费网站在线观看| 亚洲偷自精品三十六区| 亚洲国产系列一区二区三区| 国产成人3p视频免费观看| 色天使亚洲综合在线观看| 亚洲日本一区二区三区在线不卡| 久久国产精品免费网站| 亚洲av无码专区在线观看下载| 暖暖免费高清日本一区二区三区| 国产免费久久久久久无码| 免费国产美女爽到喷出水来视频| 黄网站色视频免费在线观看的a站最新 | 精品亚洲成AV人在线观看| 无码国模国产在线观看免费| 久久久久久一品道精品免费看| 亚洲AV日韩AV无码污污网站| 亚洲国产老鸭窝一区二区三区| 国产精品自在自线免费观看| 91精品国产免费入口| 搜日本一区二区三区免费高清视频 | 亚洲熟妇无码一区二区三区| 久久久久久99av无码免费网站| 久久久久久久久久免免费精品 | 亚洲综合小说另类图片动图 | 91在线亚洲精品专区| 亚洲乱码国产一区网址| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 久久永久免费人妻精品| 污网站在线免费观看| 亚洲熟妇AV日韩熟妇在线| 亚洲色四在线视频观看| 亚洲熟妇av一区二区三区| 6080午夜一级毛片免费看| 韩国免费a级作爱片无码| 老子影院午夜伦不卡亚洲| 国产亚洲美女精品久久久| 国产大片线上免费看|