kapok

垃圾桶,嘿嘿,我藏的这么深你们还能找到啊,真牛!

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  455 随笔 :: 0 文章 :: 76 评论 :: 0 Trackbacks
http://dev.csdn.net/article/62/62098.shtm

http://www.chinaunix.net/jh/26/138463.html

   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 2005-05-10 13:01 笨笨 阅读(390) 评论(0)  编辑  收藏 所属分类: J2EEALLJ2SE

只有注册用户登录后才能发表评论。


网站导航: