Как внедрить весь управляемый bean через аннотацию @ManagedProperty?
Я пытаюсь внедрить весь управляемый JSF bean в другой управляемый bean с помощью аннотации @ManagedProperty
(очень похож на Возможно вставить @ManagedBean как @ManagedProperty в @WebServlet?, но я вставляю bean, а не сервлет). Это то, что я делаю:
@ManagedBean
public class Foo {
@ManagedProperty(value = "#{bar}")
private Bar bar;
}
@ManagedBean
public class Bar {
}
Не работает (JSF 2.0/Mojarra 2.0.3):
SEVERE: JSF will be unable to create managed bean foo when it is
requested. The following problems where found:
- Property bar for managed bean foo does not exist. Check that
appropriate getter and/or setter methods exist.
Возможно ли это вообще или мне нужно делать эту инъекцию программно через FacesContext
?
Ответы
Ответ 1
Вам нужно добавить сеттеры и геттеры
@ManagedBean
public class Foo {
@ManagedProperty(value = "#{bar}")
private Bar bar;
//add setters and getters for bar
public Bar getBar(){
return this.bar;
}
public void setBar(Bar bar){
this.bar = bar;;
}
}
Когда FacesContext
будет разрешать и вводить зависимости, он будет использовать инъекции установщиков, поэтому должны быть подходящие сеттеры/геттеры. В противном случае он не найдет свойство