2014-12-02 156 views
-1

在Java 6中我會寫下面的代碼來訪問應用程序從請求範圍豆範圍的bean:如何在Java 5中將JSF bean注入另一個JSF bean?

應用範圍的bean:

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

請求範圍的bean:

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

如何我可以使用沒有這些註釋的JSF在Java 5中完成此操作嗎?

+0

@Inject註釋在Java 5中不存在。請更徹底地閱讀我的問題。 – 2014-12-03 14:57:52

回答

0

我能夠通過配置Bean1在我faces-config.xml中的託管屬性來實現這一點:

<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類增加了一組訪問方法:

public class Bean2 
{ 
    private Bean1 bean1 = null; 

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

關鍵是bean1屬性在注入之後纔可用,所以它不能在Bean2的構造函數中被引用。