java - 如何通过@ManagedProperty 注解注入(inject)整个托管bean?

标签 java jsf dependency-injection jsf-2

我试图通过 @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/

相关文章:

java - :inputText -Field is visible?

java - 有没有不应该应用依赖注入(inject)的情况?

java - Android - 为什么人们反复引用内联静态上下文,而不是在 Method() 中传递一次?

java - 应用程序错误地创建了多个 CDI-Bean

java - 如何在图的边缘包含权重?

java - 如何在不嵌套的情况下使用 Jackson 序列化单值@Data 对象(例如 {"id":123}, 而不是 {"id": {"value":123}})?

java - JSF 2.0 CDI + Spring 3.1 集成,FacesContext 在部署时为 null

java - 未定义 JSF-Html Body 标记

swift - 解析符合协议(protocol)的类和对象

c# - 如何使用 CaSTLe Windsor 的 CollectionResolver 避免循环行为?