如何在Java 5中将JSF bean注入另一个JSF bean?

时间:2014-12-02 20:45:40

标签: java jsf

在Java 6中,我将编写以下代码以从请求范围的bean访问应用程序范围的bean:

应用程序作用域bean:

@Named
@ApplicationScoped
public class Bean1
{
  ...
}

请求范围bean:

@Named
@RequestScoped
public class Bean2
{
  @Inject
  private Bean1 bean1;
}

如何使用没有这些注释的JSF在Java 5中实现这一点?

1 个答案:

答案 0 :(得分:0)

我能够通过在faces-config.xml中将Bean1配置为托管属性来实现此目的:

  <managed-bean>
    <managed-bean-name>bean2</managed-bean-name>
    <managed-bean-class>mypackage.Bean2</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
      <property-name>bean1</property-name>
      <property-class>mypackage.Bean1</property-class>
      <value>#{bean1}</value>
    </managed-property>
  </managed-bean>

然后我在我的Bean2类中添加了一个set accessor方法:

public class Bean2
{
  private Bean1 bean1 = null;

  public void setBean1(Bean1 b) { this.bean1 = b; }
}

关键是bean1属性在注入之后才可用,因此不能在Bean2的构造函数中引用它。