Программный доступ к номерам версий JSF и Primefaces

Я использую PrimeFaces 3.5.x и Mojarra JSF 2.1.x. Я хотел бы получить доступ и показать версии обеих библиотек программно.

Я использую версии в качестве свойств maven2, но я надеюсь, что есть более простой способ получить версии. Я надеюсь найти что-то вроде:

Primeface.getVersion();
FacesContext.getCurrentInstance();

Решение на основе JavaScript тоже подойдет, так как я хочу отображать версию только на странице состояния.

4 ответа

Решение

Для JSF:

//returns the major version (2.1)
FacesContext.class.getPackage().getImplementationVersion();

//returns the specification version (2.1)
Package.getPackage("com.sun.faces").getSpecificationVersion();

//returns the minor implementation version (2.1.x)
Package.getPackage("com.sun.faces").getImplementationVersion();

Для Primefaces 3.x вы можете использовать Constants класс в пакете утилит:

import org.primefaces.util.Constants;

Constants.VERSION

В PrimeFaces 4.0 Constants.VERSION удаляется в пользу;

RequestContext.getCurrentInstance().getApplicationContext().getConfig().getBuildVersion();

Также следите за FacesContext.class.getPackage().getImplementationVersion();, он не работает на некоторых серверах приложений, таких как websphere.

Если вам нужно получить версию во время выполнения, не будет никакого экземпляра RequestContext. Поэтому вы можете использовать реализацию пакета:

Package.getPackage("org.primefaces").getImplementationVersion()

Если пакет не может быть разрешен, вы можете попытаться разрешить версию через класс PrimeFaces:

PrimeFaces.class.getPackage().getImplementationVersion()

Для PrimeFaces вы можете использовать класс Constants:

org.primefaces.util.Constants.VERSION
Другие вопросы по тегам