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

What is the best strategy to update web project from JSF 1.1 to JSF 2.x?

我们有一个大型且相当古老的项目,该项目使用 JSF 1.1(特别是 MyFaces 实现),JSP 作为视图技术。现在我们想要升级使用的 JSF 版本,查看正在使用的技术和标签库。 Migrating from JSF 1.2 to JSF 2.0 给出了我们可能遇到的困境的一些想法。

我是 JSF 的新手,但我知道只有自 JSF 2.x 之后才支持 Facelets,因此我们需要先更新 JSF 版本,然后才能开始用 Facelets 替换 JSPs。

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

由于 RichFaces 的 "life cycle" 似乎已于去年完成(根据 wikipedia),这似乎也是一个用 PrimeFaces 替换 RichFaces 的好机会,PrimeFaces 似乎仍然正在积极开发中,并经常被推荐。不过,我不确定这种替换是否有意义,或者这两个组件库是否甚至提供了相似的组件,或者它们的目标是提供两组完全不同的组件,而这种替换一开始并不是一个好主意。

不管怎样,我想知道这 3 个步骤的顺序最合理。由于 Facelets 需要 JSF 2.x,而现代标签库的当前版本似乎也只能与新的 JSF 版本一起使用,因此我假设必须首先更新 JSF,但是关于用 Facelets 替换 JSPs 和RichFaces/Ajax4JSF 对于 PrimeFaces,这两个应该按什么顺序完成?

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

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

回答我自己的问题:在进行此升级一段时间后 运行 陷入了一些死胡同,对我来说 以下步骤顺序已经转变最好的:

  1. 升级 JSF 实现(在我的例子中:从 MyFaces 1.1 到 MyFaces 2.2.12)
  2. 用 Facelets 替换 JSP 文件并注释掉所有来自不受支持的标签库的标签(一些功能将在迁移完成之前丢失,但这样我只需要迁移这些标签库一次 - 到在 Facelets 中使用它们 - 而不是两次(一次在 JSPs 中使用 JSF 2,然后在 Facelets 中使用))
  3. 替换和更新不受支持和过时的标签库