In meinem Post
https://www.schoenberg-solutions.de/roller/arndtsBlog/entry/jsf-converter-mit-ejb-injection
hatte ich schon einiges zu den „neuen“ Möglichkeiten in JSF Konvertern geschrieben. Mit JSF 2.3 wurde aber auch die Möglichkeit geschaffen, Objekte von JSF wie den FacesContext zu injizieren. Um diese Feature nutzen zu können muss – wie bei den Konvertern – eine Bean existieren, die die Annotation
@FacesConfig(version = Version.JSF_2_3)
enthält. Mit dieser Voraussetzung alleine funktioniert das Injizieren jedoch nicht. Besagte Bean muss ebenfalls die Annotation
@ApplicationScoped
enthalten, um im Application Scope zu liegen. Andernfalls funktionieren die neuen Möglichkeiten nicht. Es ergibt sich also beispielsweise folgende Bean zur Konfiguration der neuen Features
package de.schoeso.jsf; import javax.faces.annotation.FacesConfig; import javax.faces.annotation.FacesConfig.Version; // Aktiviert CDI build-in Beans @FacesConfig(version = Version.JSF_2_3) // Erlaubt Injection @ApplicationScoped public class ConfigBean { /** Konstruktor */ public ConfigBean() { } }
Vergleicht auch
https://github.com/javaserverfaces/mojarra#activating-cdi-in-jsf-23