Создайте экземпляр ManagedBean (объявленный как @ManagedProperty) перед использованием внутри другого ManagedBean

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

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


person Rajat Gupta    schedule 19.11.2011    source источник


Ответы (1)


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

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.
}
person BalusC    schedule 19.11.2011