我一直致力于一个项目,并试图了解这些组件的工作原理。我对每个人扮演的角色感到困惑。我目前的任务是在Tomcat 5.5中使用一个利用JSF,MyFaces,Trinidad和Facelets的项目,并让它在Tomcat 6.0中运行。当我在新容器中运行它时,我的行为非常奇怪。所以我想弄清楚我是否需要更新这些库中的任何一个。但我似乎无法弄清楚这些是如何一起工作的。所以这里有一些问题:
鉴于此信息,Tomcat版本是否会对这些框架产生直接影响?
答案 0 :(得分:6)
JSF是一个基于组件的MVC框架,它是Java EE的一部分。 JSF仅仅是一个抽象规范(就像Java EE中的几乎所有其他规范一样)。要真正使用它,您需要一个具体的JSF实现。主要的JSF实现是Mojarra和MyFaces。
MyFaces是具体的JSF实现之一。 Mojarra是另一个。您可以通过检查JSF实现JAR文件中的MANIFEST.MF
文件找到具体的JSF版本。
Trinidad是一个JSF组件库。 JSF组件库是一个扩展,应该在任意JSF实现之上使用。组件库通常在standard component set之上提供额外的组件,具有更多的皮肤,ajaxical和增强功能。最终目标是尽量减少本土代码和代码重复。
Facelets是一种基于XML的视图技术,是JSP的继承者。它允许您通过XML声明定义JSF UI组件,并沿着它内联简单的vanilla 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规范版本兼容的版本。