如何通过@ManagedProperty注释注入整个托管bean?

yeg*_*256 15 java jsf dependency-injection jsf-2

我试图通过@ManagedProperty注释将整个JSF托管bean注入另一个托管bean (非常类似于将@ManagedBean作为@ManagedProperty注入@WebServlet?,但是我注入了bean而不是servlet).这就是我正在做的事情:

@ManagedBean
public class Foo {
  @ManagedProperty(value = "#{bar}")
  private Bar bar;
}

@ManagedBean
public class Bar {
}
Run Code Online (Sandbox Code Playgroud)

不起作用(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.
Run Code Online (Sandbox Code Playgroud)

是否有可能或我需要通过编程方式进行此注入FacesContext

Jig*_*shi 31

您需要添加setter和getter

@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;;
  }
}
Run Code Online (Sandbox Code Playgroud)

FacesContext将解析并注入依赖关系时,它将使用setter注入,因此适当的setter/getters应该在那里.否则它将找不到属性

  • 其他注意>仅注射只需要一个二传手.参考> http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/ (2认同)