ejbFacade является нулем - PullRequest
       38

ejbFacade является нулем

3 голосов
/ 12 августа 2011

Я вызываю managedBean OverzichtAlle.java со страницы jsf overzichtAlleGroepen.xhtml

Но когда я попадаю на эту страницу, я получаю сообщение об ошибке, которое не может создать экземпляр managedBeans.OverzichtAlle из-за нулевого исключения:*

Когда я отлаживаю, я вижу, что мой ejbFacade имеет значение null ..

это EJB

@EJB private ProjecttypeEFacade ejbFacade;

, и это мой конструктор:

public OverzichtAlle() 
{
    projE = ejbFacade.findAll();
    omvormenProjectTypes();
}

projE - это список (entity-list)

Что я делаю не так?

1 Ответ

5 голосов
/ 12 августа 2011

@EJB с вводится после создания компонента.Это для менеджера инъекций EJB, а именно, невозможно вызвать метод установки bean-компонента перед его созданием:

overzichtAlle.setEjbFacade(ejbFacade);
OverzichtAlle overzichtAlle = new OverzichtAlle();

Вместо этого происходит следующее:

OverzichtAlle overzichtAlle = new OverzichtAlle();
overzichtAlle.setEjbFacade(ejbFacade);

Так что ejbFacade is not доступно внутри конструктора bean-компонента.Обычный подход заключается в использовании для этого метода @PostConstruct.

@PostConstruct
public void init() {
    projE = ejbFacade.findAll();
    omvormenProjectTypes();
}

Метод @PostConstruct вызывается непосредственно после построения компонента и всех управляемых свойстви инъекции зависимости.Там вы можете выполнить свою EJB-зависимую инициализацию.После этого произойдет следующее:

OverzichtAlle overzichtAlle = new OverzichtAlle();
overzichtAlle.setEjbFacade(ejbFacade);
overzichtAlle.init();

Обратите внимание, что имя метода не имеет значения.Но init() довольно самодокументируется.

...