0

我一直在做一个项目并试图了解这些组件是如何工作的。我对每个人扮演的角色感到困惑。我目前的任务是在 Tomcat 5.5 中使用 JSF、MyFaces、Trinidad 和 Facelets 的项目,并让它在 Tomcat 6.0 中运行。当我在新容器中运行它时,我得到了非常奇怪的行为。所以我想弄清楚是否需要更新这些库中的任何一个。但我似乎无法弄清楚这些是如何协同工作的。所以这里有一些问题:

  • 如何确定我拥有的 JSF 版本?
  • JSF、Facelets 和 MyFaces 有什么区别?
  • 我读到 trinidad 是一个 JSF 框架。那么这是 JSF 的扩展吗?

鉴于这些信息,Tomcat 版本是否对这些框架有直接影响?

4

1 回答 1

6

JSF是一个基于组件的 MVC 框架,它是 Java EE 的一部分。JSF 只是一个抽象规范(就像 Java EE 中的几乎所有其他规范一样)。要真正使用它,您需要一个具体的 JSF 实现。主要的 JSF 实现是 Mojarra 和 MyFaces。

MyFaces是具体的 JSF 实现之一。莫哈拉是另一个。MANIFEST.MF您可以通过检查JSF 实现 JAR 文件中的文件来找出具体的 JSF 版本。

Trinidad是一个 JSF 组件库。JSF 组件库是一个扩展,应该在任意 JSF 实现之上使用。组件库通常在标准组件集之上提供附加组件,具有更多皮肤、ajaxical 和增强功能。最终目标是尽量减少本土代码和代码重复。

Facelets是一种基于 XML 的视图技术,是 JSP 的继承者。它允许您通过 XML 声明定义 JSF UI 组件,并沿它内联普通的普通 HTML。UIViewRoot视图文件最终在视图构建期间(恢复视图阶段)被解析并转换为视图文件,并在视图渲染期间(渲染响应阶段)生成 HTML。这个 HTML 又被发送到客户端(在 webbrowser 中打开页面,右键单击并查看源代码以查看它)。

至于您的具体问题,Tomcat 5.5 是一个 Servlet 2.4 容器,因此您最多只能在其上运行 JSF 1.2 实现。Facelets 没有捆绑在 JSF 1.x 中。您需要单独安装 Facelets 1.x。Tomcat 6.0 是一个 Servlet 2.5 容器,因此您可以在其上运行 JSF 2.0 实现。Facelets 已经捆绑在 JSF 2.0 中,因此您不需要(也不应该)单独安装它。然后,在使用 Trinidad 时,请确保获得与 JSF 规范版本兼容的版本。

也可以看看:

于 2012-05-04T14:05:33.417 回答