将Web项目从JSF 1.1更新到JSF 2.x的最佳策略是什么?

时间:2017-03-29 11:13:06

标签: jsf primefaces jsf-2 richfaces facelets

我们有一个大型且相当陈旧的项目,使用JSF 1.1(特别是MyFaces实现),JSP作为视图技术。现在我们想要升级使用过的JSF版本,查看技术和taglib。 Migrating from JSF 1.2 to JSF 2.0对我们可能遇到的困境有了一些了解。

我是JSF的新手,但我确实知道Facelets只支持JSF 2.x,所以我们需要更新JSF版本才能开始用Facelets替换JSP。

Currenty,我们还使用了一些旧的taglib,如Ajax4JSF和旧版本的RichFaces,IIRC--基于Ajax4JSF,其中一个主要特性也是为JSF提供Ajax功能和支持Ajax的组件。如果我做对了,JSF 2.x本身就支持Ajax功能,因此不再需要像Ajax2JSF这样的taglib。

由于RichFaces的“生命周期”似乎已于去年完成(根据wikipedia),这似乎也是一个很好的机会,也可以用PrimeFaces取代RichFaces,而PrimeFaces似乎仍在积极开发中并经常得到推荐。但是,我不确定这个替换是否有意义,或者这两个组件库是否提供类似的组件,或者如果他们的目标是两个提供两组完全不同的组件,那么这个替换是一个坏主意。

不管怎样,我想知道这3个步骤最合理的顺序。由于Facelets需要JSF 2.x和现代taglibs的当前版本似乎也只适用于新的JSF版本,我认为必须首先完成更新JSF,但是关于使用Facelets替换JSP和使用PrimeFaces替换RichFaces / Ajax4JSF,这两个应该完成的顺序是什么?

我的猜测是当前的taglibs也可能依赖于Facelets,所以这个顺序可能最有意义吗?

  1. JSF 1.1 => JSF 2.x
  2. JSP =>小面
  3. RichFaces => PrimeFaces

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:经过一段时间的升级并遇到几个死胡同,对我来说以下步骤顺序最佳:

  1. 升级JSF实施(在我的情况下:从MyFaces 1.1到MyFaces 2.2.12)
  2. 用Facelets替换JSP文件,并从不支持的标记库中注释掉所有出现的标记(在迁移完成之前,某些功能将会丢失,但这样我只需迁移一次这些taglib - 在Facelets中使用它们 - 和不是两次(一次用于使用JSF 2的JSP,然后用于Facelets))
  3. 替换并更新不支持和过时的标记库