我目前在JBoss as4.3上运行一个遗留的JSF应用程序。我相信这实现了JSF 1.2。但是,当我查看faces-config时,我发现它使用的是JSF1.1DTD。
我使用的是哪个版本的JSF?
发布于 2012-02-17 22:24:32
JSF实现JAR文件的/META-INF/MANIFEST.MF文件中提供了确切的JSF实现版本信息。它通常位于清单文件的底部,如下所示:
Implementation-Title: Mojarra
Implementation-Version: 1.2_12-b01-FCS
Implementation-Vendor: Sun Microsystems, Inc.可以使用ZIP工具打开JAR文件。对于Sun / 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 1.1规范,那么即使是JSF 1.2/2.0实现也将在JSF 1.1“兼容性模式”下运行。但是,当您实际使用的是JSF1.1实现时,您不能将其声明为符合JSF1.2/2.0这样的更新版本。它要么出错,要么被忽略。
https://stackoverflow.com/questions/9329778
复制相似问题