博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Primefaces框架开发杂谈!
阅读量:5937 次
发布时间:2019-06-19

本文共 1928 字,大约阅读时间需要 6 分钟。

hot3.png

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

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

最早接触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!

转载于:https://my.oschina.net/u/730189/blog/86292

你可能感兴趣的文章
git merge 和 git merge --no-ff
查看>>
kernel笔记——内核编译与进程管理
查看>>
shell中定义变量用双引号和单引号以及不用引号的区别
查看>>
去除ArcMap连接空间数据库中多余的属性表
查看>>
独立软件开发商进军SaaS注意八个问题,互联网营销
查看>>
kvc
查看>>
jdk内存的分配
查看>>
关于self.用法的一些总结
查看>>
UIView翻译 (参考)
查看>>
Android Display buffer_handle_t的定义
查看>>
SSH详解
查看>>
ASM概述
查看>>
【290】Python 函数
查看>>
godaddy域名转发(域名跳转)设置教程
查看>>
silverlight学习布局之:布局stackpanel
查看>>
理解并自定义HttpHandler
查看>>
Linux各发行版流行度统计数据与排名
查看>>
Thrust快速入门教程(一)——简介
查看>>
使用Base64加密URL
查看>>
curl 命令使用
查看>>