Создание экземпляра ManagedBean (объявленного как @ManagedProperty) перед использованием внутри другого ManagedBean - PullRequest
1 голос
/ 19 ноября 2011

Я использую @ManagedBean (объем запроса) в качестве @ManagedProperty внутри другого @ManagedBean.Однако bean-компонент (используемый как @ManagedProperty) во время использования не создается, и поэтому приводит к NullPointerException.

Как мне решить эту проблему?

1 Ответ

6 голосов
/ 19 ноября 2011

Вы, очевидно, пытаетесь получить к нему доступ в конструкторе родительского компонента. Это действительно невозможно. Управляемые свойства вводятся после строительства.

ParentBean parentBean = new ParentBean(); // Constructor invoked.
parentBean.setChildBean(new ChildBean()); // Managed property set.

Самая ранняя точка доступа - это метод @PostConstruct. Он вызывается после внедрения и управляемого свойства (и всех других зависимостей, таких как @EJB).

@ManagedProperty("#{childBean}")
private ChildBean childBean;

@PostConstruct
public void init() {
    System.out.println(childBean); // Not null.
}
...