что диктует версия JSF? Контейнер или faces-config?
в настоящее время я запускаю устаревшее приложение JSF на JBoss как 4.3. Я считаю, что это реализует JSF 1.2. Однако, когда я посмотрел на faces-config, я увидел, что он использует JSF 1.1 DTD.
какую версию JSF я использую?
1 ответов
точная информация о версии реализации JSF доступна в /META-INF/MANIFEST.MF
файл jar-файла реализации JSF. Обычно он находится в нижней части файла манифеста следующим образом:
Implementation-Title: Mojarra
Implementation-Version: 1.2_12-b01-FCS
Implementation-Vendor: Sun Microsystems, Inc.
файл JAR можно открыть с помощью инструмента ZIP. В случае Sun RI / Mojarra, имя файла jsf-impl.jar
, иногда уже суффикс с точным номером версии, например jsf-impl-1.2_12-b01-FCS.jar
. Если вы используете реализацию JSF, поставляемую JBoss 4.3.x, то вы можете найти файл в $JBOSS_HOME/server/<Profile>/deploy/jboss-web.deployer/jsf-libs
папка. Если вы предоставили свою собственную реализацию JSF в /WEB-INF/lib
и настройки web.xml
чтобы сказать JBoss использовать его вместо этого, вам нужно проверить его в том, который поставляется в .
или вы можете просто получить его программно:
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.2/2.0, Когда вы на самом деле использование реализации JSF 1.1. Он либо ошибется, либо будет проигнорирован.