注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Javado做Java

学习的点点滴滴http://blog.csdn.net/guorujian

 
 
 

日志

 
 
关于我

东北人! 狮子的獠牙、光速拳! 我很佩服163的办事认真,故乡一栏竟然能精确到乡,而且我们乡合并才不久。厉害!永远支持网易!

网易考拉推荐

JSF带来了什么?   

2008-02-27 22:44:25|  分类: 收藏篇 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

     当初看上JSF,是因为看中了几个好处:

1、获取或显示表单数据时用相同的EL即可,JSF之前的EL只能get不能set;

2、MyFaces实现里面有很多很“炫”的组件,例如下拉菜单,树型控件,日期选择控件等等,使用极其方便。

于是就在一个小项目中使用JSF开发,用着就发现其实这个东西也带来了很多比以前更麻烦的地方,就拿很常见的数据库操作——查询、修改、插入、删除来说明使用JSF来实现有什么麻烦:

1、查询。对于小数据量,用一个dataTable就什么都搞定了。可是大数据量分页就比较麻烦了,因为dataTable的分页是把所有数据都取出来然后再一页页显示,而大数据量下一般是要看哪一页就取哪一页。网上有个通用的分页存储过程,只要把一系列参数(页码,排序依据,每页大小等)传给它,就能获得某一页的数据。如果直接通过URL来传递那些参数,服务器根据参数来调用存储过程,是很方便的事情。可是JSF却不通过URL来传递参数了,整个页面处理的过程也比较复杂,没有以前那样直观。有人改了一下dataModel的实现方式,使它每次只取一页的数据,效果是达到了,但要跳到某一页,却只能点链接,不能通过输入URL来到达了(也就是不能把某一页添加到收藏夹里了)。

这两天做了一些试验,在jsf里还是可以通过URL传递参数的,在Backing Bean里可以通过ValueBinding的getValue取得URL参数,然后根据参数来从数据库中取得相应的内容,生成某个对象的bean,再在页面上显示出来。不过这样一来,似乎就跟servlet差不多了。

如果可以通过配置来设定表单提交是get方式还是post方式就好了。可是目前一律只能post,这样造成的后果除了不能收藏,不能刷新(会提示是否重新提交数据)之外,还会使浏览器的后退功能失效。

2、修改。在datatable中把数据显示出来后,可以每一行加一个commanButton,在它的action method中调用dataModel的getRowData()方法来得到该行的数据,把数据保存在一个request范围的bean里面,再转向到另一个页面通过可编辑表单来显示该bean的内容,在那里就可以修改、提交了。由于是使用了forward方式转向,所以url显示的页面还是数据显示的那个页面,只要一刷新,就又回到数据显示那一页而不是修改那一页了;如果不想修改,按一下浏览器的后退按钮,虽然回到了数据显示的那一页,但上面的commandButton已经失效,例如点击修改按钮,没有任何反应,必须把那一页刷新一下再点才有效。

为了解决这个问题,我采用了URL传递参数的方法。通过在URL中指定ID来说明要修改的是哪个对象,在修改页面的backing bean的构造函数中,读取URL参数来获得ID,然后通过查询数据库得到该对象的其他内容,再显示在页面上。这样就可以刷新,可以后退。

3、新增。新增跟修改可以用同一个页面来显示,只是commandButton对应不同的action method,例如“修改”按钮对应的是update,“新增”按钮对应的是create,在两个method里分别使用数据库的update语句和insert语句即可。新增的时候是没有ID的,修改的时候则已经有了ID。

4、删除。在显示数据的dataTable里,每行可以添加一个commandButton,在它的action method里,读取该行数据,得到ID后执行SQL的DELETE语句即可,比较简单。

无论是做什么,都离不开三个东西:页面,配置文件,Backing Bean。页面是表现层的东西,负责把页面上的东西与Backing Bean联系起来。配置文件则指定在页面上使用的Backing Bean的名字、类、使用范围,还有导航规则(Navigation Rules)。Backing Bean就是程序的逻辑部分了。即使实现最简单的功能,例如显示某个变量的值,这三个东西都是必不可少的。

修改页面的时候,虽然不用重启服务器,但必须在新的session里才能看出效果来,最简单的办法就是把浏览器关掉,打开一个新的,查看结果。修改了配置文件和backing bean 就必须重启服务器了。所以调试JSF是很麻烦的。

  评论这张
 
阅读(149)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017