我试图通过 @ManagedProperty
注释将整个 JSF 托管 bean 注入(inject)另一个托管 bean(非常类似于 Possible to inject @ManagedBean as a @ManagedProperty into @WebServlet? ,但我注入(inject)的是一个 bean,而不是一个 servlet ).这就是我正在做的:
@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
以编程方式执行此注入(inject)?
最佳答案
你需要添加setters和getters
@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
将解析并注入(inject)依赖项时,它将使用 setters 注入(inject),因此应该有适当的 setters/getters。否则它不会找到该属性
关于java - 如何通过@ManagedProperty 注解注入(inject)整个托管bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5165567/