【问题标题】:what dictates JSF version? Container or faces-config?什么决定了 JSF 版本?容器还是faces-config?
【发布时间】:2012-03-08 22:37:56
【问题描述】:

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

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

【问题讨论】:

    标签: xml jsf jsf-1.2 jboss-eap-4.3.x


    【解决方案1】:

    确切的 JSF 实现版本信息可在 JSF 实现 JAR 文件的/META-INF/MANIFEST.MF 文件中找到。它通常位于清单文件底部附近,如下所示:

    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 文件夹中找到该文件。如果您在 /WEB-INF/lib 中提供了您自己的 JSF 实现,并配置了 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 之类的较新版本。它要么出错,要么被忽略。

    【讨论】:

      猜你喜欢
      • 2013-04-14
      • 1970-01-01
      • 2012-04-28
      • 2015-10-08
      • 2013-09-17
      • 2019-05-12
      • 2011-01-01
      • 2011-11-26
      • 2011-06-02
      相关资源
      最近更新 更多