【问题标题】:How to inject entire managed bean via @ManagedProperty annotation?如何通过@ManagedProperty 注解注入整个托管bean?
【发布时间】:2011-07-07 03:20:00
【问题描述】:

我正在尝试通过@ManagedProperty 注释将整个JSF 托管bean 注入另一个托管bean(与Possible to inject @ManagedBean as a @ManagedProperty into @WebServlet? 非常相似,但我注入的是一个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 以编程方式进行注入?

【问题讨论】:

    标签: java jsf dependency-injection jsf-2


    【解决方案1】:

    你需要添加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;;
      }
    }
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2015-08-16
    • 2011-07-14
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    相关资源
    最近更新 更多