NO.4 JODD与数据页面绑定

(小莫同学对本文亦有贡献)

    上一篇里提到一个JODD,今儿个就说说它。

     先列举一下我对JODD的基本了解:

      1.估计国内大多数知道JODD的JSPer的都是“惊其艳”于SpringSide1;

      2.JODD里面其实有很多工具,不过大家最多还是用它来绑定页面数据;

      3.SpringSide2、3里不用了,还不知道为啥;

     

    说到数据绑定,肯定得先说Struts的FormBean,这玩意儿真是想说爱你不容易,随便整个系统都得千儿八百个页面,页面也是千奇百怪,变来变去,谁那么多功夫写FormBean捏?

 

 

 

    好了,现在分析一下JODD的绑定功能

    1.数据获取-BeanUtil.load(Object bean, Object source)

 

 

      Source的数据类型可以是:

      1. Map

      2. MultipartRequest (文件上传)

      3. MultipartRequestWrapper(文件上传)

      4. HttpServletRequest

      5. ResultSet

      6. ServletContext

      7. HttpSession

    

     针对 BeanUtil.load要求表单域名必须与Bean属性名完全一致做以下分析:

      a.一般说来,BeanUtil.load对于一个单一Bean的表单数据获取,基本足够了;

          所以PT项目中的单Bean管理流程中就使用了它。

      b. 对于内含复杂逻辑的情况,可以在页面用JS实现:

        举例:

        》用户密码的修改其实需要三个密码框:原密码、新密码、确认密码,

          表单提交前将确认无误的新密码框value赋值给原密码;

        》某属性flag实为根据十个表单域的值而确定,可以在表单设置隐藏域flag,表单提交前以JS方式给其赋值。

      c.对于非常复杂的页面

 

 

         比如Order(订单)对象里有个GoodsList(商品列表),按照现有开发规范,表单域的命名为“表名”+“字段名”,那BeanUtil.load就搞不定了。

         还好在我们原框架包中发现了ParamUtils.generateObject(Class cl, String inputPrefix)(原是个半成品,修正了一下,就可以用了):

         Class cl:要生成的Bean原类(**Dto.getClass())

         String inputPrefix:表单域前缀(我们系统一般就是表名了)

 

 

 

    2.数据展示-<jodd:form beans="bean1,bean2,bean3" scopes="session,request,request"> 

      JODD里Bean的展示是最值得称道的,想想我最早学JSP时,写一个select展示时,要写一堆类似下面的代码

        <option <%=if("1".equals(**))?"selected":""%> value="1">1</option>

        <option <%=if("2".equals(**))?"selected":""%> value="2">2</option>

      呵呵,现在有了jodd:form,新增页面和编辑(修改)页面可以完全用一个页面了。

 

 

 

    因此,正是有了JODD FORM,让我们的JSP开发变得更加轻松。

    灵活运用它,让我们做个“懒人”吧:)

 

 

 

 

关于JODD的信息源:

1.JODD的官网请见 http://jodd.sourceforge.net/,jodd.jar可以在里面下载

2.Calvin-江南白衣提到JODD的原文 http://www.blogjava.net/calvin/archive/2005/08/24/10914.html

3.这儿一篇不错的介绍JODD使用的帖子,人家好不容易写出来的,我直接引网址啦:)

  http://czcoding.blogbus.com/logs/3898327.html

 

最后补充一下“Jodd Form taglib 简介”,  以下出自 SpringSide1使用手册

    Jodd Form的使用极其简单,因为太简单了,才会名不见经传而被我们选用,让我们罔顾各大Framework的Form Tag.

    他只要把<form>的头尾以<jodd:form bean= "mybean">包住即可,就会自动绑定mybean的所有同名属性到普通html标记--input, selectbox, checkbox,radiobox.....在这些input框里不用再写任何代码

    可见,它的好处一是节约代码,二是保留了html版的form tag, 不需要用一套taglib来代替

    而且支持内嵌对象的绑定,如book.category.name。

    比那些需要使用非纯html标记的<ww:input>,逐个绑定input框,select框的Form Tag,虽减了些许灵活性,但实在方便得太厉害。

    如果属性来自于request,而不是某个java bean,写<jodd:form bean= "request">

    jodd采用的是普通的bean反射,调用所有属性的toString()函数。

    注意,jodd在html tag不含value="xxx"属性时才会自动绑定。如果某个input框你不希望jodd自动绑定,或者默认的toString()不能满足要求时,可以手工为该input框写上 value="xxxx",jodd看到你已经定义了属性值,就会自动绕开。

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值