что диктует версия 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. Он либо ошибется, либо будет проигнорирован.