Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
          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-05-19 13:58 seal 閱讀(218) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 蒲江县| 孝感市| 晋宁县| 罗定市| 昂仁县| 花垣县| 临海市| 德清县| 稻城县| 淮滨县| 且末县| 博兴县| 湖北省| 泸州市| 古丈县| 平阴县| 蕉岭县| 鲁山县| 东海县| 卫辉市| 穆棱市| 荃湾区| 澎湖县| 页游| 乌拉特中旗| 板桥市| 长顺县| 开化县| 聂荣县| 巴南区| 三都| 大英县| 历史| 星子县| 峨山| 阿拉善左旗| 武山县| 盘锦市| 岳池县| 呈贡县| 广宗县|