6

我目前在 JBoss AS 4.3 上运行旧版 JSF 应用程序。我相信这实现了 JSF 1.2。然而,当我查看 faces-config 时,我发现它使用的是 JSF 1.1 DTD。

我使用的是哪个版本的 JSF?

4

1 回答 1

12

/META-INF/MANIFEST.MFJSF 实现 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 之类的较新版本。它将出错或被忽略。

于 2012-02-17T14:24:32.327 回答