Программный доступ к номерам версий 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