Spring Boot 3 и JSF с Джакартой не работают

Spring Boot 3 дает клиентам время для перехода с Java EE на Jakarta, изменяя имена пакетов сjavaxкjakarta. Но это больше, чем имена пакетов. Я не могу заставить Spring Boot работать с JSF, не говоря уже о Primefaces-Jakarta.

Все решения, которые я пробовал, либо полагаются на CDI, а затем жалуются, что CDI не работает, --> потому что Spring Boot имеет другой механизм внедрения, это не Glassfish. Или он жалуется, что не может найти фабрики, например:

      Servlet.init() for servlet [facesServlet] threw exception
    java.lang.IllegalStateException: Keine Factory als Backup für jakarta.faces.lifecycle.LifecycleFactory gefunden.
        at jakarta.faces.FactoryFinderInstance.notNullFactory(FactoryFinderInstance.java:496) ~[jakarta.faces-api-4.0.1.jar:na]
        at jakarta.faces.FactoryFinderInstance.getFactory(FactoryFinderInstance.java:190) ~[jakarta.faces-api-4.0.1.jar:na]

Если я установлю имена фабричных классов вручную, они снова захотят CDI, и я вернусь к тому, с чего начал (и я все равно не хочу, чтобы Spring и CDI существовали параллельно).

Я использую последние версии библиотек Jakarta и вехи Spring Boot. Например, «jakarta.faces:jakarta.faces-api:4.0.1», «org.glassfish:jakarta.faces:4.0.0» и «org.springframework.boot:spring-boot-starter-web:3.0.0- М4".

Есть ли какой-нибудь учебник, проект с открытым исходным кодом или что-то еще, что показывает, как это делается?

1 ответ

Добавление в конце конфигурации ваших лиц может помочь:

      servletContext.setAttribute(com.sun.faces.RIConstants.FACES_INITIALIZER_MAPPINGS_ADDED, Boolean.TRUE);
Другие вопросы по тегам