在Java 6中,我将编写以下代码以从请求范围的bean访问应用程序范围的bean:
应用程序作用域bean:
@Named
@ApplicationScoped
public class Bean1
{
...
}
请求范围bean:
@Named
@RequestScoped
public class Bean2
{
@Inject
private Bean1 bean1;
}
如何使用没有这些注释的JSF在Java 5中实现这一点?
答案 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的构造函数中引用它。