我目前在 JBoss AS 4.3 上运行旧版 JSF 应用程序。我相信这实现了 JSF 1.2。然而,当我查看 faces-config 时,我发现它使用的是 JSF 1.1 DTD。
我使用的是哪个版本的 JSF?
我目前在 JBoss AS 4.3 上运行旧版 JSF 应用程序。我相信这实现了 JSF 1.2。然而,当我查看 faces-config 时,我发现它使用的是 JSF 1.1 DTD。
我使用的是哪个版本的 JSF?
/META-INF/MANIFEST.MF
JSF 实现 JAR 文件的文件中提供了确切的 JSF 实现版本信息。它通常位于清单文件底部附近,如下所示:
Implementation-Title: Mojarra
Implementation-Version: 1.2_12-b01-FCS
Implementation-Vendor: Sun Microsystems, Inc.
可以使用 ZIP 工具打开 JAR 文件。对于 Sun RI / Mojarra,文件名是jsf-impl.jar
,有时已经带有确切的版本号后缀,例如jsf-impl-1.2_12-b01-FCS.jar
. 如果您使用 JBoss 4.3.x 提供的 JSF 实现,那么您可以在文件$JBOSS_HOME/server/<Profile>/deploy/jboss-web.deployer/jsf-libs
夹中找到该文件。如果您在其中提供了自己的 JSF 实现/WEB-INF/lib
并配置web.xml
为告诉 JBoss 使用它,那么您需要在提供的那个中检查它/WEB-INF/lib
。
或者,您可以通过编程方式获取它:
Package jsfPackage = FacesContext.class.getPackage();
String implTitle = jsfPackage.getImplementationTitle();
String implVersion = jsfPackage.getImplementationVersion();
String implVendor = jsfPackage.getImplementationVendor();
至于faces-config.xml
,您还可以控制应用程序设计的 JSF 版本。因此,如果您声明它符合 JSF 1.1 规范,那么即使是 JSF 1.2/2.0 实现也将在 JSF 1.1“兼容性模式”中运行。但是当您实际使用 JSF 1.1 实现时,您不能声明它符合 JSF 1.2/2.0 之类的较新版本。它将出错或被忽略。