Primefaces框架开发杂谈!

使用Primefaces正式开发商用的项目算起来已经有1年半了,现在是时候该进行一下总结了,以便与国内正在使用或潜在使用Primefaces进行开发的各位进行更多的交流与分享。

首先介绍一下Primefaces是何物:Primefaces(以 下简称:PF)是JSF众多框架之一,由一家土耳其公司研发与维护的,且现在使用其开发的项目越来越多 据官方介绍2012年已经超过icefaces和richfaces了,PF现如今已俨然成为众多JSF开发者喜爱的框架 就如Icefaces这种JSF大牛级的框架在3.0版本中都有大量抄袭PF的代码(据PF官网介绍抄袭度达到90%),非常有意思的是由于 ICEfaces的抄袭 其已经被纳入到PF的使用客户列表了。更为详细的PF介绍请移步至其官网:http://www.primefaces.org/whyprimefaces.html。

最早接触PF是在2010年时,由于本人对开源的项目比较感兴趣 闲来无事就去研究研究这个、看看那个 当时仅仅知道其表面的东西,但这恰恰给我提供了后来在实际项目技术选型时做了很好的铺垫。2011年4月份时需要从头开发一个项目,当初在使用这个框架的 时候国内几乎没什么相关的资料,而且说句实在话 PF当时(2.2.1版本)做的并不是那么的尽如人意 跟其他的JSF框架相比还有很大的上升空间(不管是稳定性还是扩展性或是其他各方面),但经过不断的升级、改进现在最新版本已经到3.4.1了且比以前稳 定了许多,但在追随其升级版本也是一件非常痛苦的事情 尤其是从2升到3时 重构了许多方法 最典型的就是<p:datatable/>中动态加载数据,现在项目中用的版本为3.1.1,没有更新到最新版本是因为项目比较紧没时间去升 级了,如果升级的话 升完后还得需要详细的进行测试 以免因为升级带来部分功能无法使用。

接下来讲讲当初为何选择PF作为展示层框架进行开发:

项目基础架构采用了Primefaces + Spring Security + Spring3.0 + Hibernate3.5.6。

1、为何不选用Struts2或JSF其他的框架(例如:Icefaces、richfaces等)?

当时项目开发周期比较紧,项目组没有美工 如果使用Struts2进行开发那还需要耗费大量的时间在界面设计开发上;因为之前在一家外企开发美国医疗的项目时展示层框架是用的ICEfaces所以 本人对JSF也还算熟悉,而JSF是以组件形式进行展示且可以进行更换或定制皮肤,熟悉使用之后可快速拿来即用。为何最终选用Primefaces而不是 ICEfaces是因为个人觉得PF的官方对技术支持的要比ICEfaces好很多,这样在开发时遇到什么问题可以得到官方的帮助。

2、PF有何优劣势?

优势:

  1. 组件式、拿来即用,熟悉之后可进行快速开发;
  2. PF技术支持的也非常不错,有自己官方的BLOG和论坛;
  3. 官方有提供多种界面皮肤,可以省去大部分界面开发的时间;
  4. 轻量级,仅仅有一个JAR包,无任何其他JAR包依赖;
  5. 框架中已经集成了jQuery,无需再引入jQuery脚本而可以直接使用jQuery脚本;
  6. 与Spring可以非常好的结合;
  7. 有Mobile版本,可支持iPhone, Android, Palm, Blackberry, Windows Mobile等众多类型的手机。

劣势:

  1. 对于国内的大部分开发者来说没有中文文档,是其最大的劣势;
  2. 虽然官方有皮肤样式但都相对来说比较丑陋,还需自己进行定制;
  3. 完全不支持IE6,部分版本对IE7的兼容性也不是那么尽如人意,这对国内还有众多IE6的用户来说无遗是一个灾难。

3、使用PF开发时有无遇到什么困难或问题?

在开发过程中肯定会或多或少的遇到各种问题,相信不管是谁在使用一门新的技术时都会遇到不同的问题,但快速解决问题是关键;用PF开发时遇到的最大 的问题就是因为界面兼容性,当系统开发完后由于我大部分时间是使用MAC OS 浏览器使用的是Firefox,而其他同事的浏览器不是IE8就是IE9或者IE7,由于项目的周期较短 花了大量的时间用于功能性测试 但到了客户现场进行部署完之后发现问题来了,客户大部分使用的都是IE6或360浏览器(当时360浏览器内核也都是基于IE6的) 在IE6上面显示的效果非常的差导致给客户的第一印象很不好,还好最终在与客户的协商下进行IE版本升级从而解决了这个问题。


时间原因暂时先写这些,上述内容纯属个人观点,如大家有任何疑问或问题欢迎留言咨询,当然如果有人愿意一起推动Primefaces在国内的应用更好。^_^ Good Luck!

你可能感兴趣的:(JSF,primefaces)