что диктует версия JSF? Контейнер или грани-конфиг?
В настоящее время я запускаю устаревшее приложение JSF на JBoss как 4.3. Я считаю, что это реализует JSF 1.2. Однако, когда я посмотрел на faces-config, я увидел, что он использует JSF 1.1 DTD.
Какую версию JSF я использую?
1 ответ:
Точная информация о версии реализации JSF доступна в файле
/META-INF/MANIFEST.MF
JAR-файла реализации JSF. Обычно он располагается в нижней части файла манифеста следующим образом:Файл JAR можно открыть с помощью инструмента ZIP. В случае Sun RI / Mojarra имя файлаImplementation-Title: Mojarra Implementation-Version: 1.2_12-b01-FCS Implementation-Vendor: Sun Microsystems, Inc.
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 использовать его вместо этого, то вам нужно проверить его в том, который поставляется в/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.2 / 2.0, Когда вы на самом деле используете реализацию JSF 1.1. Он либо ошибется, либо будет проигнорирован.