ManagedBean устарел. Использование CDI Bean не работает

Моя IDE указывает ManagedBean как устаревший. Я прочитал об этом и решил заменить свои аннотации javax.faces.bean.ManagedBean на javax.inject.Named. Но при замене мой CDI Bean не распознается (PostConstruct не вызывается):

//@ManagedBean(name = "carlistbean")
@Named(value = "carlistbean")
@SessionScoped
public class CarListBean implements Serializable {

    @PostConstruct
    public void init(){
        cars = carRepository.getAllCars();
    }

    @Inject
    private CarRepository carRepository;

Я использую Bean в качестве бэкэнда для моей страницы JSF:

<h:dataTable value = "#{carlistbean.cars}" var = "car"

Я на JSF 2.2.18

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.18</version>
    </dependency>

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.18</version>
    </dependency>

Кто-нибудь может мне помочь/подсказать?

ОБНОВИТЬ

Я использую J2ee8

мой beans.xml в WEB-INF выглядит так:

<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       bean-discovery-mode = "all">
</beans>

Вы также заменили sessionscope на cdi? stackoverflow.com/questions/4347374/…

Kukeltje 20.02.2019 09:06

Да, я также использовал javax.enterprise.context.SessionScoped.

mcfly soft 20.02.2019 09:16

Какая версия Java EE? А сервер приложений? (как) вы убедились, что он не использует другую версию jsf? Если вы используете Java EE 6, у вас есть пустой файл beans.xml? Любое предупреждение в журнале сервера приложений?

perissf 20.02.2019 09:39

или, если вы используете более новую версию Java EE, соответствующий контент beans.xml

Kukeltje 20.02.2019 10:18

Я обновил информацию в вопросе.

mcfly soft 20.02.2019 10:35

java ee 8 и на каком сервере вы работаете? А java ee 8 — это JSF 2.3, а не 2.2. Кроме того, ваш pom не должен включать в себя jsf jar-файлы, но должен иметь полные API-интерфейсы java ee 8 в качестве предоставленных зависимостей.

Kukeltje 20.02.2019 11:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
131
0

Другие вопросы по теме