如何通过@ManagedProperty注释注入整个受管豆?

2022-09-03 10:09:21

我正在尝试通过注释将整个 JSF 受管 bean 注入到另一个受管 bean 中(非常类似于可能将@ManagedBean作为@ManagedProperty注入到@WebServlet?,但我正在注入到 bean 中,而不是 servlet)。这就是我正在做的:@ManagedProperty

@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;;
  }
}

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


答案 2

推荐