DynaBean是BeanUtils里的寶貝之一。有了動態Bean,就不用寫那么多VO出來了,特別那些只是為了和View交互而存在的bean,i hate Form 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)函數就可以了,
                  又或者,用Velocity和Freemarker。

                 最后,如果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);


          posted on 2008-04-24 13:15 caihaibo 閱讀(177) 評論(0)  編輯  收藏 所屬分類: ORM

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


          網站導航:
           
          主站蜘蛛池模板: 卢湾区| 临夏县| 峨山| 桦南县| 临海市| 论坛| 鹤壁市| 宜川县| 永福县| 奉节县| 台湾省| 吉林省| 盐城市| 金华市| 泗水县| 忻城县| 古蔺县| 防城港市| 崇阳县| 星子县| 任丘市| 彝良县| 莲花县| 肃宁县| 阳春市| 扶余县| 富蕴县| 内乡县| 行唐县| 松滋市| 葫芦岛市| 名山县| 扎鲁特旗| 宜昌市| 黄平县| 库尔勒市| 新巴尔虎右旗| 白银市| 沛县| 依安县| 怀宁县|